C/C++中的Do对象在程序退出后会被收集到垃圾
Do objects in C/C++ get garbage collected after the program exits?
在C和C++中,假设我没有使用智能指针或任何其他奇怪的垃圾收集机制,当程序退出时,内存是否会被释放(垃圾收集)?
当进程终止时,操作系统会删除分配给它的虚拟内存。
由于它的整个地址空间都消失了,所以里面的所有对象也消失了。
然而,这与C++垃圾回收不同:不会调用析构函数。记忆只是。。。悄悄地返回操作系统。
在几乎所有平台上,进程拥有的所有资源都会在进程退出时由操作系统恢复(某些类型的共享资源,例如SYSV-IPC,尽管如此)。
是的,当程序退出时,操作系统会自动释放任何未释放的内存。这意味着在任何时候调用exit()
通常都是安全的,尽管您需要小心其他不会自动释放的资源,如Windows上的全局原子和命名管道等。
内存在C++中根本不会被垃圾收集,因为析构函数不会运行等等。但是,作为程序退出时清理进程的一部分,它将释放程序使用的任何内存或其他资源。其他资源可能是锁、共享内存、网络连接、文件句柄等。
这在C.中没有指定
C标准对此只字不提,但普通操作系统会为您释放内存。
相关文章:
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 为什么 C++ 中的以下结构声明会导致退出 127?
- 如果我按enter键,我如何退出c++中的循环
- 退出c++中的递归void方法
- clang:错误:链接器命令失败,C++代码中的退出代码为 1(使用 -v 查看调用)
- C++中的奇怪异常代码,当用户输入为 23 时,退出值 1,073,740,940(代码:0xc0000374)
- 从std :: fileSystem ::路径对象的类中退出时的分割故障
- 如何将指针分配给功能中的新对象,而不会使该对象在退出后消失
- 抑制boost.test中的退出信号
- gdb 中的线程 0x7fffc57fa700 (LWP 31671) 退出] 是什么意思?
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 在 Linux 上使用 c++ 中的键退出无限循环
- 存储在全局变量中的函数指针在进入函数时设置为 0,并在退出函数时返回到以前的状态
- Arduino esp8266中的c++函数修改了c文件中生成的浮点值,在c++函数退出后,c文件中会出现胡言乱语
- 从 C++ 中的函数退出
- C STL映射中的SegFault由于过程退出期间的静态可变清理而找到
- 霍夫曼解码中的递归函数不退出
- Vstest.console.exe以Bamboo中的代码255退出
- Qt:对于生产者-消费者模式中的消费者来说,这是正确的退出方式吗
- 在命名空间中的类中,我可以只退出**类命名空间吗