首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内存分配

内存分配
EN

Stack Overflow用户
提问于 2010-07-15 01:11:50
回答 4查看 240关注 0票数 0

我在一个C文件中使用了内存分配代码,但是没有释放它,然后这个文件被删除了。我的问题是:在知道包含操作和程序的分区的内存不断耗尽,并且我已经使用了“磁盘清理”的情况下,即使在没有释放的情况下删除文件也会发生内存泄漏吗?

注:有人告诉我,一旦我重新启动计算机,动态内存中的所有内容都将消失,是真的吗?

EN

回答 4

Stack Overflow用户

发布于 2010-07-15 01:13:52

只有在程序运行时,内存泄漏才会继续。一旦程序退出,操作系统应该为你释放内存,即使你没有这样做,也不需要从你的硬盘上删除任何文件。

我相信您对在磁盘上存储和在内存中存储之间的区别感到困惑。

例如,当您有int x = 4;时,x存储在内存中。这与您的文件(如word文档)的存储位置不同。如果重新启动计算机,此x将丢失。此外,当您的程序停止运行时,操作系统会清理x占用的空间。

当程序泄漏内存时,它基本上占用了比实际需要更多的RAM,并且随着时间的推移,它的大小会膨胀。但是,一旦程序停止运行,操作系统就会将其全部清除,因为它不再被使用。没有永久性的影响。

票数 4
EN

Stack Overflow用户

发布于 2010-07-15 01:17:43

是的,从文件系统中删除该文件与您的C程序将看到的内容无关。任何没有被释放的malloc都会在程序终止时被释放。仅供参考,在不了解这些基础知识的情况下编写C代码是有点危险的,你可能想要做一些阅读,或者尝试一些像python甚至java这样的东西,它们会首先对你隐藏这些责任。

但是你应该了解堆栈、堆、虚拟内存和i/o,以及按值传递和按引用传递(指针),才能开始在C中有效。了解什么是缓冲区溢出。有很多东西需要学习。

票数 0
EN

Stack Overflow用户

发布于 2010-07-15 01:22:08

当程序终止时,操作系统将释放它分配给该程序的所有资源。在您的例子中,内存泄漏将在程序分配的内存内,在它完成后,操作系统将回收所有“泄漏”的内存。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3248658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档