SIM*_*MEL 21 c malloc free memory-management
如果我在我的C程序中使用分配内存,malloc现在我想退出,我是否必须释放分配的内存,或者我可以假设,因为我的整个程序终止,它将被操作系统释放?
我在Linux环境中运行.
Bla*_*iev 21
任何现代操作系统都会在进程终止后清理所有内容,但依靠这一点通常不是一个好习惯.
这取决于你正在编写的程序.如果它只是一个快速运行和终止的命令行工具,您可能不会打扰清理.但请注意,正是这种心态导致守护进程和长时间运行程序中的内存泄漏.
它可以是一个很好的设计,非常有效,只需退出并允许操作系统清理所有内容.默认情况下,Apple OS X会执行此操作:除非应用程序设置"不要杀我"标记,否则应用程序将被杀死,恕不另行通知.
通常,释放每个内存分配需要很长时间.某些内存页可能已被换出,必须重新读回,以便将它们标记为空闲.内存分配器必须做很多工作来更新可用内存跟踪数据.所有这些努力都是浪费,因为该计划正在退出.
但这必须通过设计来完成,而不是因为程序员已经忘记了已分配的内存!