ballshapesdsd
V2EX  ›  问与答

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

  •  
  •   ballshapesdsd · Oct 20, 2017 · 2788 views
    This topic created in 3125 days ago, the information mentioned may be changed or developed.
    在程序里 new 了个对象,程序退出了,这个内存会不会被操作系统施放掉?
    11 replies    2017-10-20 23:18:15 +08:00
    ysc3839
        1
    ysc3839  
       Oct 20, 2017 via Android
    肯定会的,不然的话内存很快就没了。
    wevsty
        2
    wevsty  
       Oct 20, 2017
    会的,这就是操作系统干的活
    hxndg
        3
    hxndg  
       Oct 20, 2017
    会的,所谓内存泄露往往发生在程序还运行的时候.
    操作系统会在进程退出之后回收内存,你可以查一下孤儿进程的东西.
    ps 这个应该问 google,而不是问 V 站.
    biggray0312
        4
    biggray0312  
       Oct 20, 2017
    内存泄漏指的是程序申请了内存却因为种种原因没有得到释放, 进程结束后程序所占的内存也就被清理了.
    vsyf
        5
    vsyf  
       Oct 20, 2017 via Android
    @all
    请教下各位如果内存泄露的话该怎么查呢?
    比如说一个守护进程创建录音线程来录音,出现问题的时候录出来的数据没有被及时写进磁盘,内存 buffer 一直在变大。
    在一开始不知道愿意的情况下我该这么查呢?
    vsyf
        6
    vsyf  
       Oct 20, 2017 via Android
    愿意->原因
    moonmagian
        7
    moonmagian  
       Oct 20, 2017 via Android
    Google 一下就能出答案...无论什么平台下都有很方便的内存泄露检测工具,自己只用过 dmalloc,同类工具不少
    hxndg
        8
    hxndg  
       Oct 20, 2017   ❤️ 1
    @vsyf 一般来说是手动改写内存分配的模块,里面手动添加一个记录申请释放的内存管理器是最直接的方法,除此之外还有各种调试方式,不过这个也是应该问 google 的.
    tabris17
        9
    tabris17  
       Oct 20, 2017
    进程退出后所占用的内存就被标记为回收了。所以某些 python 的 WSGI 框架为了避免内存泄漏,可以设置接受多少次请求后重启进程
    liuminghao233
        10
    liuminghao233  
       Oct 20, 2017 via iPhone
    自己写个循环 new 十万个对象完事后退出就知道啦
    littlewing
        11
    littlewing  
       Oct 20, 2017
    Valgrind
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6138 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 83ms · UTC 02:03 · PVG 10:03 · LAX 19:03 · JFK 22:03
    ♥ Do have faith in what you're doing.