コード例 #1
0
ファイル: memory-manager.cpp プロジェクト: carriercomm/hhvm
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;
}
コード例 #2
0
ファイル: memory-manager.cpp プロジェクト: Tintazul/hhvm
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;
}