V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
ballshapesdsd
V2EX  ›  问与答

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

  •  
  •   ballshapesdsd · 2017-10-20 17:16:01 +08:00 · 2393 次点击
    这是一个创建于 2592 天前的主题,其中的信息可能已经有所发展或是发生改变。
    在程序里 new 了个对象,程序退出了,这个内存会不会被操作系统施放掉?
    11 条回复    2017-10-20 23:18:15 +08:00
    ysc3839
        1
    ysc3839  
       2017-10-20 17:18:24 +08:00 via Android
    肯定会的,不然的话内存很快就没了。
    wevsty
        2
    wevsty  
       2017-10-20 17:19:51 +08:00
    会的,这就是操作系统干的活
    hxndg
        3
    hxndg  
       2017-10-20 17:20:38 +08:00
    会的,所谓内存泄露往往发生在程序还运行的时候.
    操作系统会在进程退出之后回收内存,你可以查一下孤儿进程的东西.
    ps 这个应该问 google,而不是问 V 站.
    biggray0312
        4
    biggray0312  
       2017-10-20 17:37:27 +08:00
    内存泄漏指的是程序申请了内存却因为种种原因没有得到释放, 进程结束后程序所占的内存也就被清理了.
    vsyf
        5
    vsyf  
       2017-10-20 17:49:29 +08:00 via Android
    @all
    请教下各位如果内存泄露的话该怎么查呢?
    比如说一个守护进程创建录音线程来录音,出现问题的时候录出来的数据没有被及时写进磁盘,内存 buffer 一直在变大。
    在一开始不知道愿意的情况下我该这么查呢?
    vsyf
        6
    vsyf  
       2017-10-20 17:50:18 +08:00 via Android
    愿意->原因
    moonmagian
        7
    moonmagian  
       2017-10-20 17:57:02 +08:00 via Android
    Google 一下就能出答案...无论什么平台下都有很方便的内存泄露检测工具,自己只用过 dmalloc,同类工具不少
    hxndg
        8
    hxndg  
       2017-10-20 18:08:34 +08:00   ❤️ 1
    @vsyf 一般来说是手动改写内存分配的模块,里面手动添加一个记录申请释放的内存管理器是最直接的方法,除此之外还有各种调试方式,不过这个也是应该问 google 的.
    tabris17
        9
    tabris17  
       2017-10-20 18:09:58 +08:00
    进程退出后所占用的内存就被标记为回收了。所以某些 python 的 WSGI 框架为了避免内存泄漏,可以设置接受多少次请求后重启进程
    liuminghao233
        10
    liuminghao233  
       2017-10-20 18:13:22 +08:00 via iPhone
    自己写个循环 new 十万个对象完事后退出就知道啦
    littlewing
        11
    littlewing  
       2017-10-20 23:18:15 +08:00
    Valgrind
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   926 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 21:12 · PVG 05:12 · LAX 13:12 · JFK 16:12
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.