繁体   English   中英

C应用中MALLOC的资源消耗

[英]Resource Consumption of MALLOC in a C Application

我正在编写一个C应用程序,我使用malloc在堆上创建数据。 现在,当应用程序处于活动状态时,此数据始终是持久的,因此我永远不会“释放”Malloc数据。

我的问题是:当应用程序终止时,是否会自动释放此内存,或者我必须在完成应用程序时手动执行free()?

这是实现定义的。 严格按照C标准,你应该free所有你已经malloc “d应用程序终止之前。

但是,任何现代通用操作系统都会在您之后进行清理,因此这仅适用于某些嵌入式,老式或其他异域环境。

作为一种风格,尝试free每个分配的块。 它让你养成编写干净代码和防止内存泄漏的习惯。

它将被释放。 这是“过程”抽象的奇迹。 此运行进程拥有的所有资源和内存在终止时释放。

请注意,花了一些时间才能提出这种抽象,但对于一个系统来说,这是一个非常好的沙箱。 事实上,杀戮过程甚至被用来作为最后的手段来尝试修复在执行数天时出现泄漏或性能下降的错误程序(它的名称为“Process Rejuvenation” ,甚至存在于会议和期刊中) ,但实际上是一个糟糕的设计或编码的准入)。

你永远不应该明确free这样的记忆。 它充其量只会给你带来任何好处,最糟糕的是它会将大量换出的数据交换回内存,只是为了检查一些簿记指针然后丢弃它,无缘无故地摧毁用户的硬盘。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM