我一直在做一些研究,但仍然找不到解决我的问题的方法。
据我所知,当我们在函数外声明变量时,它们是在堆内分配的,并且直到执行结束才释放内存;除非我们专门使用 delete
函数这样做。我尝试了以下函数来释放在代码开头声明的变量,但没有一个起作用(在 dbgdel.cpp 中出现调试错误):delete
, delete []
,免费()
。
我做错了什么?
我将在下面粘贴代码的摘要版本。任何帮助表示赞赏。谢谢!
(我知道在正确的编程中通常不需要全局变量,但这不是我的代码,我只是想按原样修复它。)
#include <stdio.h>
#include <conio.h>
#include <cv.h>
#include <highgui.h>
#include <cxcore.h>
#include "Viewer.h"
....
// Arrays
float z_base [5201][5201];
....
uchar maskThreshold [5200][5200];
...
void main(){
.....
delete [] z_base;
//free (z_base);
//delete z_base;
//free (&z_base);
}
最佳答案
As far as I know, when I declare variables outside of every function they are allocated within the heap
这不是真的。一般情况下,您只需调用delete
即可。或 delete[]
如果你用 new
分配了内存或 new []
分别。
关于c++ - 如何从堆中删除变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14438287/