当我执行时,这个程序有什么问题,我希望类被破坏,但程序结束后我看到cout fetch后的错误框.问题是什么?
#include <iostream>
using namespace std;
class user {
public:int internal;
public:user(int point) {
internal = point;
};
~user () {
cout << "Fetch";
}
};
void main() {
user gil(5);
user * p;
p=&gil;
delete p;
getchar();
}
Run Code Online (Sandbox Code Playgroud)
您的代码具有未定义的行为.您正在调用delete未分配的指针new.
一旦你有一个未定义的行为,所有的赌注都会关闭,任何行为都是可能的.
一旦{ }创建它们的范围结束,自动(堆栈)存储上的对象就会被释放,不需要调用delete它们.