void* MemoryManager::debugPreFree(void* p, size_t bytes, size_t userSpecifiedBytes) { auto const header = reinterpret_cast<DebugHeader*>(uintptr_t(p) - kDebugExtraSize); assert(checkPreFree(header, bytes, userSpecifiedBytes)); header->requestedSize = DebugHeader::kFreedMagic; memset(p, kSmartFreeFill, bytes); return header; }
void* MemoryManager::debugPreFree(void* p, size_t bytes, size_t userSpecifiedBytes) { auto const header = reinterpret_cast<DebugHeader*>(p) - 1; assert(checkPreFree(header, bytes, userSpecifiedBytes)); header->allocatedMagic = 0; // will get a freelist pointer shortly header->requestedSize = DebugHeader::kFreedMagic; memset(header + 1, kSmartFreeFill, bytes); return header; }