是否需要在程序退出/关闭时释放对象?
换句话说,让我们说为了论证,你有一个关闭你的应用程序的按钮,但在你关闭之前你显示一个图像,然后你关闭应用程序.
在关闭应用程序之前,是否需要释放该图像视图?程序退出时是否会自动释放内存,或者如果不释放内存,内存是否会以某种方式"活动"?
我知道你"应该"发布它,我的问题是它的技术方面,以及幕后发生的事情.
这不是必需的.但是,如果你正在使用valgrind
或使用类似的工具,你很快就会发现,留下你所有的记忆都会给你带来虚假的警告.
在Linux方面,堆使用sbrk
系统调用来增长.这会使整个处理器的内存空间一次增加一个大块(因此只sbrk
需要一个就可以为许多malloc
s 提供足够的空间).当进程消失时,内核将回收所有分配的内存sbrk
.这就是你安全的原因.内核还将关闭由该进程打开的所有文件描述符.
可能会出现一些问题.如果您的进程fork
处于不合适的时刻,则任何打开的文件描述符都将被复制.我已经看到这表现为一个TCP连接在原始进程死亡后神秘地悬挂着,这是令人讨厌的.此外,还有其他资源不是进程范围的,因此在进程终止时不会回收它们.这包括共享内存段,临时文件,命名管道和UNIX套接字,以及一些其他IPC机制.
综上所述?记忆很好.文件描述符通常很好.如果不清理,一些更深奥的IPC功能将被严重破坏.