这是我的一个示例代码:
void test()
{
Object1 *obj = new Object1();
.
.
.
delete obj;
}
我在Visual Studio中运行它,在带有“delete 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;
这一行吗?
loadLeaves
函数是否在堆上分配对象?还是返回本地地址之类的东西?记住,你只能删除你new
的东西... - Evan Teran