bool memory_mgr::free(void* pp, bool defer) { if (0 == pp) return true; rl_map<void*, size_t>::iterator iter = allocs_.find(pp); if (allocs_.end() == iter) return false; allocs_.erase(iter); void* p = (char*)pp - alignment; size_t size = *(size_t*)p; if (defer) { deferred_free_[deferred_index_ % deferred_count] = p; deferred_free_size_[deferred_index_ % deferred_count] = size; deferred_index_ += 1; p = deferred_free_[deferred_index_ % deferred_count]; size = deferred_free_size_[deferred_index_ % deferred_count]; if (p) free_impl(p, size); } else { free_impl(p, size); } return true; }
static void zone_free(malloc_zone_t *zone, void *ptr) { if (malloc_usable_size_impl(ptr)) { free_impl(ptr); return; } free(ptr); }
static void zone_free_definite_size(malloc_zone_t *zone, void *ptr, size_t size) { size_t current_size = malloc_usable_size_impl(ptr); if (current_size) { MOZ_ASSERT(current_size == size); free_impl(ptr); return; } free(ptr); }
void CRYPTO_free(void *str, const char *file, int line) { if (free_impl != NULL && free_impl != &CRYPTO_free) { free_impl(str, file, line); return; } #ifndef OPENSSL_NO_CRYPTO_MDEBUG if (call_malloc_debug) { CRYPTO_mem_debug_free(str, 0, file, line); free(str); CRYPTO_mem_debug_free(str, 1, file, line); } else { free(str); } #else free(str); #endif }
/* operator delete[](void*, std::nothrow_t const&) */ MOZ_MEMORY_API void mozmem_malloc_impl(_ZdaPvRKSt9nothrow_t)(void *ptr) { free_impl(ptr); }
/* operator delete[](void*) */ MOZ_MEMORY_API void mozmem_malloc_impl(_ZdaPv)(void *ptr) { free_impl(ptr); }