我写了如下的代码:
void somemethod()
{
CString str;
...
delete &str;
}
程序运行的时候发生了栈错误。原因:delete是针对new出来的对象的,再如上的代码中,str对象实际上被删除了两次,一次是delete还有一次是退出函数时的自动销毁。
本文通过一个具体的C++示例,解释了为什么在函数中使用delete操作符来释放一个局部变量会导致栈错误。文中提到,该局部变量(CString str)在函数结束时会自动销毁,而在此之前手动使用delete操作符对其进行删除,则会导致对象被释放两次,从而引发问题。
我写了如下的代码:
void somemethod()
{
CString str;
...
delete &str;
}
程序运行的时候发生了栈错误。原因:delete是针对new出来的对象的,再如上的代码中,str对象实际上被删除了两次,一次是delete还有一次是退出函数时的自动销毁。
11万+

被折叠的 条评论
为什么被折叠?