在 C 中调用中止:它会释放堆内存吗?

Calling abort in C : does it release heap memory?

提问人:HARITHA MADHAV 提问时间:4/18/2022 更新时间:4/18/2022 访问量:116

问:

在 C 中调用 abort() 将导致进程异常终止。我可以通过在线资源发现它不会关闭打开的文件,可能不会删除临时文件,并且可能不会刷新流缓冲区。动态分配的内存(通过 malloc() 函数分配)怎么样?它们被回收了吗?

c 动态 malloc 中止

评论


答:

3赞 Jonathan Leffler 4/18/2022 #1

当程序终止时(在正常的托管 C 实现中),程序使用的内存将被释放。无论它是通过还是通过正常出口终止都无关紧要。abort()

如果你在一个晦涩难懂的(和敌对的)嵌入式系统上,你可能会发现规则是不同的,但这是不寻常的,即使在独立的实现中,当程序退出时,内存不会被释放,无论它如何退出。

评论

1赞 Eric Postpischil 4/18/2022
释放普通内存,包括标准系列分配的内存。特殊的东西,如命名的共享内存,可能会持续存在。malloc