gpt4 book ai didi

c - 调试时使用 exit() 函数

转载 作者:太空宇宙 更新时间:2023-11-04 03:20:23 24 4
gpt4 key购买 nike

我正在做一个 C 项目。当程序正常运行时,它会在程序结束时进行清理。它清理 curl 和 mysql,以及 free()s char 数组等。

当我开发新例程时,我正在分配应在程序结束时清理的资源。但是为了看看新例程发生了什么,我正在打印各种东西然后调用:退出(0);

我的问题是,当我使用这些粗鲁的退出命令编译代码时,linux 环境是否足够智能以释放本应在程序结束时释放的资源?或者我是否正在开发系统内存泄漏?

最佳答案

是的,内存将被释放,但它不会被进程放弃,而是会在进程退出后的某个时间点被操作系统回收。

在极端情况下,这可能会使 RAM 不与进程相关联,但会临时使用,导致操作系统累积停滞。这实际上只是“非常”遗留操作系统(认为已有 20 多年历史)中的一个主要问题。

在许多情况下,文件句柄的供应比 RAM 少,您在等待新文件句柄时可能会遇到问题。但同样,大多数现代操作系统最终都会回收打开的文件句柄。

现在,有些项目(IPC 结构,如 semaphoresshared memory 等)可能不会在粗鲁的导出中被清除,但如果您在以下位置使用它们,您通常会知道这些事情全部。

关于c - 调试时使用 exit() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898201/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com