我试图在类中重载new运算符但它不起作用。当我尝试在全局范围内重载它时,它确实有效但不在课堂上。
我的类中有这两个,但是当在类或类似的东西中调用new时,它不会运行。如果我把它从课堂(全球)中取出来,它确实有效。
编辑:看起来新的重载被设计为在使用new创建类类型的对象时运行。我希望在课堂上有新内容的时候让它运行。我该怎么做?
void* LeakCheck::operator new(size_t size)
{
cout << "Allocating memory..." << endl;
auto newObject = memoryManager.allocate(size); //calls malloc
return newObject;
}
void LeakCheck::operator delete(void* objectPtr) noexcept
{
cout << "Deallocating memory..." << endl;
void** ptr = reinterpret_cast<void**>(objectPtr);
memoryManager.deallocate(ptr, 0); //calls free
}