c++ - 如何从堆中删除变量?

标签 c++ visual-c++ heap-memory free

我一直在做一些研究,但仍然找不到解决我的问题的方法。 据我所知,当我们在函数外声明变量时,它们是在堆内分配的,并且直到执行结束才释放内存;除非我们专门使用 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/

相关文章:

c++ - 如何在 C++ 中将 16 位十六进制颜色转换为 RGB888 值

c++ - 直接从指针转换为模板函数?

c++ - CComPtrBase::~CComPtrBase 在解除分配智能指针时崩溃

c++ - 返回在堆中分配的实例与在堆栈中分配的实例

java - 通过方法推送对象时是否会创建对象的副本?

c++ - 顺序序列容器或如何打包 vector

c++ - stereoCalibrate 中的术语标准错误

c++ - 检测到合并排序堆损坏

c++ - 使用 OpenCV、GStreamer 流式传输视频

c++ - 为什么使用这两组语句时variable中的数据不同?