【发布时间】:2011-06-11 20:46:03
【问题描述】:
所以我是一个试图掌握 operator new 的初学者。我的析构函数有什么问题?
class arr{
public:
arr(){
pool=::operator new(100*sizeof(double));
}
~arr(){
::operator delete(pool);
}
void* pool;
};
int main()
{
arr a;
a.~arr(); //If I comment this out it's ok.
void* pool2=::operator new(100*sizeof(double)); //Works
::operator delete(pool2); //Fine.
system("pause");
return 0;
}
离开a.~arr(); in 给了我这个错误:
调试断言失败!文件:dbgdel.cpp 行:52
表达式:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)
我不明白为什么 pool2 可以正常工作,但使用该类会给我带来问题。此外,该错误仅在系统“暂停”后才弹出,即在调用 a.~arr() 之后???
谢谢!
【问题讨论】:
标签: c++ visual-c++ memory-management destructor