2014-12-22 228 views
0

我开始最近与PASCAL编程,我理解的是,帕斯卡尔退出所有内存分配的程序(使用新的或GetMem)内存被释放时。那么尽管如此,用pascal编写的程序会导致内存泄漏?pascal pl会发生内存泄漏吗?

我问这是因为大多数语言,我知道可能导致内存泄漏,我需要知道这是否也是帕斯卡的情况。

+1

我认为你需要定义你的内存泄漏是什么意思,或者提供语言为例为一体,使你提到的泄漏。至少在我的经验中,大多数允许内存泄漏的语言就像C和C++一样,泄漏几乎总是在流程退出时被终止和回收。这是内存泄漏仅限于进程运行时间。 – UpAndAdam

+0

有时记忆可能会从电脑泄漏到地板下面,所以您应该检查一下。例如在C中为 –

+0

,如果您在退出之前分配了一个内存并且没有释放它,那么您将有内存泄漏。 – user3776836

回答

0

在Windows上关闭帕斯卡一个程序(或任何其他语言的这个问题)时,Windows重新分配以前用于其他用途采取了由帕斯卡的内存。

因此,没有Pascal不会导致内存泄漏,但如果您指的是安全性,内存泄漏不是全部内容,还有很多其他内容(临时文件等)“泄漏”。

0

内存泄漏是一个术语,用于描述程序运行时发生的情况,而不是结束后的情况。当您动态分配内存时,会“泄漏”内存,但在不再需要时不会释放内存。如果这种情况发生的次数足够多(这对于长时间运行的程序(如服务器或大型循环内部)尤为不利,则内存泄漏将导致程序崩溃或变得无法使用,因为它已经用完了所有内存可以分配给它。消耗过多内存的程序也会导致计算机系统速度变慢,因为操作系统被迫使用虚拟内存(在硬盘上)以管理所有正在运行的程序。 “记忆浪费”可能是更好的术语。

无论是程序滥用了它的记忆与否,它结束的时候,所有的这些内存返回到操作系统的控制,并可供其他程序使用,可能启动。