我有一个类,我希望能够设置一个标志,说明它是否是堆分配的,这样它就可以在自己之后正确清理,如果它在堆栈上,就不会尝试删除自己。问题是......我似乎无法同时覆盖两者new
和构造函数。因此,它从new
设置标志的重载开始,isHeapAllocated
然后进入重置标志的构造函数。
void* String8::operator new(size_t size)
{
String8* string = (String8*)malloc(size);
if(string == null)
Exception("allocation fail : no free memory");
string->isHeapAllocated = true;
return string;
}
String8::String8()
{
isHeapAllocated = false;
}
所以new String8()
设置isHeapAllocated
标志,然后将其重置为false
. 有没有办法做到这一点?