new/delete 造成堆碎片、分配失敗、性能抖動。operator new/deletevoid* operator new(size_t size) { return malloc(size); }
void operator delete(void* p) { free(p); }
替換默認分配器,可接入自定義內存池。
class TestClass {
public:
void* operator new(size_t size);
void operator delete(void* p);
};
void* TestClass::operator new(size_t size) { return pool_alloc(size); }
void TestClass::operator delete(void* p) { pool_free(p); }
TestClass 及其派生類(除非派生類再重載)使用此分配器。new[]/delete[] 必須單獨重載class TestClass {
public:
void* operator new[](size_t size);
void operator delete[](void* p);
};
否則數組分配仍走全局堆。注意:size 可能包含元素計數額外開銷(實現定義)。
new[],簡化分配邏輯。