c++内存泄露在程序退出之后还存在吗?

2017-10-20 17:16:01 +08:00
 ballshapesdsd
在程序里 new 了个对象,程序退出了,这个内存会不会被操作系统施放掉?
2403 次点击
所在节点    问与答
11 条回复
ysc3839
2017-10-20 17:18:24 +08:00
肯定会的,不然的话内存很快就没了。
wevsty
2017-10-20 17:19:51 +08:00
会的,这就是操作系统干的活
hxndg
2017-10-20 17:20:38 +08:00
会的,所谓内存泄露往往发生在程序还运行的时候.
操作系统会在进程退出之后回收内存,你可以查一下孤儿进程的东西.
ps 这个应该问 google,而不是问 V 站.
biggray0312
2017-10-20 17:37:27 +08:00
内存泄漏指的是程序申请了内存却因为种种原因没有得到释放, 进程结束后程序所占的内存也就被清理了.
vsyf
2017-10-20 17:49:29 +08:00
@all
请教下各位如果内存泄露的话该怎么查呢?
比如说一个守护进程创建录音线程来录音,出现问题的时候录出来的数据没有被及时写进磁盘,内存 buffer 一直在变大。
在一开始不知道愿意的情况下我该这么查呢?
vsyf
2017-10-20 17:50:18 +08:00
愿意->原因
moonmagian
2017-10-20 17:57:02 +08:00
Google 一下就能出答案...无论什么平台下都有很方便的内存泄露检测工具,自己只用过 dmalloc,同类工具不少
hxndg
2017-10-20 18:08:34 +08:00
@vsyf 一般来说是手动改写内存分配的模块,里面手动添加一个记录申请释放的内存管理器是最直接的方法,除此之外还有各种调试方式,不过这个也是应该问 google 的.
tabris17
2017-10-20 18:09:58 +08:00
进程退出后所占用的内存就被标记为回收了。所以某些 python 的 WSGI 框架为了避免内存泄漏,可以设置接受多少次请求后重启进程
liuminghao233
2017-10-20 18:13:22 +08:00
自己写个循环 new 十万个对象完事后退出就知道啦
littlewing
2017-10-20 23:18:15 +08:00
Valgrind

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/399313

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX