C++ 重载 operator delete 为什么会调用两次呢 ?

2025-05-14 00:18:35
推荐回答(1个)
回答1:

class T {
static void* operator new(std::size_t);
static void* operator new(std::size_t, CustomAllocator&);

static void operator delete(void*, std::size_t);
};
T* p = new(alloc) T;
上述代码将被编译器展成下述代码 ( 猜测,如果有高人知道如何查看编译器生成的中间代码,烦请告知)
// compiler-generated code for T* p = new(alloc) T;
//
void* __compilerTemp = T::operator new (sizeof(T), alloc); // 1
T* p;