我一直在做一些研究,但仍无法找到问题的解决方案。
据我所知,当我们在函数之外声明变量时,它们会在堆中分配,并且在执行结束之前不会释放该内存;除非我们使用delete
函数专门执行此操作。我已经尝试了以下函数来释放在代码开头声明的变量,但没有一个工作(在dbgdel.cpp中得到调试错误):delete
,delete []
,{{1} }。
我做错了什么?
我将粘贴到代码的摘要版本下面。任何帮助表示赞赏。谢谢!
(我知道全局变量通常不适合编程,但不是我的代码,我只是试图修复它。)
free()
答案 0 :(得分:6)
据我所知,当我在每个函数之外声明变量时,它们在堆中分配
事实并非如此。一般情况下,如果您分别使用delete
或delete[]
分配内存,则只需拨打new
或new []
。
答案 1 :(得分:4)
delete
您new
,delete[]
您的new[]
。void main
错误(main必须返回int)。就是这样。
答案 2 :(得分:3)
你没有。运行时将为您完成。根据经验,您只需delete/delete[]
new/new[]
分配的内容。
另请注意,全局变量不是在堆上分配,而是在静态内存中分配。