C/C++中的Do对象在程序退出后会被收集到垃圾

Do objects in C/C++ get garbage collected after the program exits?

本文关键字:退出 中的 C++ Do 对象 程序      更新时间:2023-10-16

在C和C++中,假设我没有使用智能指针或任何其他奇怪的垃圾收集机制,当程序退出时,内存是否会被释放(垃圾收集)?

当进程终止时,操作系统会删除分配给它的虚拟内存。

由于它的整个地址空间都消失了,所以里面的所有对象也消失了。

然而,这与C++垃圾回收不同:不会调用析构函数。记忆只是。。。悄悄地返回操作系统。

在几乎所有平台上,进程拥有的所有资源都会在进程退出时由操作系统恢复(某些类型的共享资源,例如SYSV-IPC,尽管如此)。

是的,当程序退出时,操作系统会自动释放任何未释放的内存。这意味着在任何时候调用exit()通常都是安全的,尽管您需要小心其他不会自动释放的资源,如Windows上的全局原子和命名管道等。

内存在C++中根本不会被垃圾收集,因为析构函数不会运行等等。但是,作为程序退出时清理进程的一部分,它将释放程序使用的任何内存或其他资源。其他资源可能是锁、共享内存、网络连接、文件句柄等。

这在C.中没有指定

C标准对此只字不提,但普通操作系统会为您释放内存。