据我所知,在大多数情况下,操作系统将在进程终止时释放任何进程内存,至少在最常见的用户操作系统(Windows,Linux等)下.如果进程崩溃等,操作系统也会执行清理.
但是,依靠操作系统执行清理并不是正确的编码程序,你不能总是保证它会做你想做的事情.你应该总是执行你自己的垃圾收集,如果你想在正确的时间完成它(我退出时程序崩溃,因为系统以奇怪的顺序清理了内存并创建了一些无效的指针,然后它试图释放).
进程内存清理可能仅适用于原始进程或线程分配的内存.如果您生成新进程,这些可能会继续执行.如果你使用一个已经在运行的服务并调用一些分配内存的方法然后给你控制,那可能无法清理.
有些视频驱动程序不会立即释放VRAM,而在某些较旧的卡上,运行重复泄露VRAM的进程最终会导致系统崩溃.
您应该始终释放您分配的任何内存,特别是如果您的进程可能重新启动或继续执行.
这并不是绝对必要的,实际上有时可以方便地"泄漏"这些指针以避免担心析构函数的排序.
没有现代操作系统会泄漏此内存,该进程使用的所有内存都将被回收.
| 归档时间: |
|
| 查看次数: |
3096 次 |
| 最近记录: |