c++析构函数释放对象占用内存的问题

c++刚学析构函数遇到了问题,请问这样是为什么?
求答,为何会这种报错?

img

delete的目的是啥你要搞清楚?
delete的是你通过new分配出来的堆内存,而你的num的空间并不是你通过new分配的空间,所以你这里要么去掉delete # 要么你在构造的时候new int一块堆内存给num,num声明成指针

该回答引用GPTᴼᴾᴱᴺᴬᴵ
这种报错通常表示在程序运行过程中使用了无效的指针或者释放了已经释放过的内存。常见的情况包括:

  1. 指针为空或者指向已经释放的内存
  2. 操作数组越界,导致访问了非法的内存
  3. 内存泄漏,即没有及时释放已经分配的内存

由于您提供的信息比较有限,我无法确定具体是哪一种情况引起了报错。您可以在程序崩溃时按下“Retry”按钮,进入调试模式,然后查看堆栈信息和变量值,以确定具体的问题所在。同时,您可以在析构函数中添加一些打印语句,输出对象的析构顺序,以帮助您定位问题。

delete不能随便用的,删除的对象一定是通过new创建的对象,否则是不可以的。new创建的对象和你这里直接定义的num变量分配空间的位置不同,一个在堆上,一个在栈上。delete栈上的是不可以的