这里是我有一个示例代码:删除在C++的对象
void test()
{
Object1 *obj = new Object1();
.
.
.
delete obj;
}
我在Visual Studio中运行它,并且它崩溃在与线“删除OBJ;”。 这不是通常的方式来释放与对象关联的内存吗? 我意识到它会自动调用析构函数......这是正常的吗?
下面的代码片段:
if(node->isleaf())
{
vector<string> vec = node->L;
vec.push_back(node->code);
sort(vec.begin(), vec.end());
Mesh* msh = loadLeaves(vec, node->code);
Simplification smp(msh);
smp.simplifyErrorBased(errorThreshold);
int meshFaceCount = msh->faces.size();
saveLeaves(vec, msh);
delete msh;
}
loadleaves()
是从磁盘中读取一个网格,创建一个Mesh
对象,并返回它的功能(想vec
和node->code
是关于刚刚信息文件被打开)
我应该删除delete msh;
行吗?
让我们看看你的课堂是什么样子。你的析构函数可能有问题。 – TheFuzz 2010-08-07 02:56:00
下面提到的'loadLeaves'函数是否在堆上分配对象?或者它是否返回本地地址或类似的地址?记住,你只能'删除'你'新'... – 2010-08-07 05:44:29
确保析构函数不是私有的! – Vaibhav 2013-08-08 08:29:56