2012-08-14 88 views
-1

我在堆中存在严重问题,因为在之前的程序中,我没有删除指针变量。如何清理内存空间/堆以运行当前程序?C++清理堆

+1

你的意思是你有内存泄漏?如果您的计算机内存不足,请重新启动它。 – Annabelle 2012-08-14 00:55:36

+0

我们在这里谈论什么样的系统?普通的Windows/Mac OS/Linux机器?嵌入式系统? – 2012-08-14 00:56:18

+0

我正在使用安全外壳通过mac osx命令行连接到太阳计算机。 – teamaster 2012-08-14 00:57:42

回答

0

对于使用new/malloc或其他此类函数在堆上进行的每个分配,必须删除/释放完成时使用的资源。

C++提供了一些简单的方法来实现这一点,使用构造函数分配资源和析构函数来释放资源。

然后有很多聪明的方式与std :: auto_ptr甚至其他智能指针,可以帮助你管理这个。

基本上你已经分配了它 - 所以这是你的工作来释放它。

+0

我不记得我创建的代码/动态变量/指针,因为我删除了代码。任何其他方式来清理呢? – teamaster 2012-08-14 01:00:08

+2

是的,但通常操作系统会在进程死机后删除所有内容,通常所有内容都是沙盒,所有现代操作系统都采用一些内存保护系统。 – user827992 2012-08-14 01:01:41

+0

清洁什么?理论上你必须不分配内存 - 重新启动机器将是一个可行的方法 - 实际上大多数操作系统将在程序退出时释放内存。 – 2012-08-14 01:01:59

1

杀死有问题的进程,然后操作系统会为你清理它们的内存。

+0

不保证:-) – 2012-08-14 01:04:54

+3

不按标准的课程,但是在现代操作系统上(例如OP所说的太阳)它会。 – tobyodavies 2012-08-14 01:07:12

+0

同意 - 但在每个操作系统上“有效”的答案 - 即使是要创建的答案也要优于平台特定的示例。依靠非标准功能使维护程序员保持业务。 VMS总是将本地变量设置为零类型值 - 不是便携式:-) – 2012-08-14 01:09:14