MCPcopy Create free account
hub / github.com/OpenDDS/OpenDDS / pool_free

Method pool_free

dds/DCPS/MemoryPool.cpp:375–405  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

373}
374
375bool
376MemoryPool::pool_free(void* ptr)
377{
378 bool freed = false;
379 if (ptr && includes(ptr)) {
380#if defined(WITH_VALGRIND)
381 VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(pool_ptr_, pool_size_);
382#endif
383
384 FreeHeader* header = reinterpret_cast<FreeHeader*>(
385 reinterpret_cast<AllocHeader*>(ptr) - 1);
386
387 // Free header
388 header->set_free();
389
390 join_free_allocs(header);
391
392#ifdef VALIDATE_MEMORY_POOL
393 validate_pool(*this, false);
394#endif
395
396 freed = true;
397
398#if defined(WITH_VALGRIND)
399 VALGRIND_DISABLE_ADDR_ERROR_REPORTING_IN_RANGE(pool_ptr_, pool_size_);
400 VALGRIND_MEMPOOL_FREE(pool_ptr_, ptr);
401#endif
402 }
403
404 return freed;
405}
406
407void
408MemoryPool::join_free_allocs(FreeHeader* freed)

Calls 2

includesFunction · 0.85
set_freeMethod · 0.80