我正在做 ac 项目。当程序正常运行时,它会在程序结束时进行清理。它清理 curl 和 mysql,以及 free()s char 数组等。
当我开发新例程时,我正在分配应该在程序结束时清理的资源。但是为了看看新例程发生了什么,我打印出各种东西然后调用:exit(0);
我的问题是,当我用这些不礼貌的退出命令编译代码时,linux 环境是否足够智能以释放在我的程序结束时将被取消分配的资源?或者我是否在系统内存中发生泄漏?
是的,内存将被释放,但它不会被进程放弃,而是会在进程退出后的某个时间点被操作系统回收。
在极端情况下,这可能会使 RAM 与进程不相关联,但临时使用的累积会使操作系统陷入困境。这实际上只是“非常”传统操作系统(想想 20 多岁)的主要问题。
在许多情况下,文件句柄的供应量比 RAM 短,您在等待新文件句柄时可能会遇到问题。但同样,大多数现代操作系统最终都会回收打开的文件句柄。
现在,有些项目(IPC 结构,如semaphores、共享内存等)可能不会在不礼貌的退出中被清除,但如果您正在使用它们,您通常会知道这些事情。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句