当前位置:  开发笔记 > 运维 > 正文

是否需要在程序退出时释放对象?

如何解决《是否需要在程序退出时释放对象?》经验,为你挑选了1个好方法。

是否需要在程序退出/关闭时释放对象?

换句话说,让我们说为了论证,你有一个关闭你的应用程序的按钮,但在你关闭之前你显示一个图像,然后你关闭应用程序.

在关闭应用程序之前,是否需要释放该图像视图?程序退出时是否会自动释放内存,或者如果不释放内存,内存是否会以某种方式"活动"?

我知道你"应该"发布它,我的问题是它的技术方面,以及幕后发生的事情.



1> Tom..:

这不是必需的.但是,如果你正在使用valgrind或使用类似的工具,你很快就会发现,留下你所有的记忆都会给你带来虚假的警告.

在Linux方面,堆使用sbrk系统调用来增长.这会使整个处理器的内存空间一次增加一个大块(因此只sbrk需要一个就可以为许多mallocs 提供足够的空间).当进程消失时,内核将回收所有分配的内存sbrk.这就是你安全的原因.内核还将关闭由该进程打开的所有文件描述符.

可能会出现一些问题.如果您的进程fork处于不合适的时刻,则任何打开的文件描述符都将被复制.我已经看到这表现为一个TCP连接在原始进程死亡后神秘地悬挂着,这是令人讨厌的.此外,还有其他资源不是进程范围的,因此在进程终止时不会回收它们.这包括共享内存段,临时文件,命名管道和UNIX套接字,以及一些其他IPC机制.

综上所述?记忆很好.文件描述符通常很好.如果不清理,一些更深奥的IPC功能将被严重破坏.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有