0
最近我一直在想,當一個進程被殺死(顯式或無意)使用類似任務管理器或在代碼中查殺時會發生什麼。 O/S在內存分配等方面做了什麼?當一個進程/任務被終止時會發生什麼
在我看來,大多數(如果不是全部)內存通常在終止時被釋放,這是怎麼發生的以及什麼可以破壞這個(如果有的話)?
最近我一直在想,當一個進程被殺死(顯式或無意)使用類似任務管理器或在代碼中查殺時會發生什麼。 O/S在內存分配等方面做了什麼?當一個進程/任務被終止時會發生什麼
在我看來,大多數(如果不是全部)內存通常在終止時被釋放,這是怎麼發生的以及什麼可以破壞這個(如果有的話)?
取決於應用程序。某些應用程序允許開發人員檢測應用程序何時被殺死(即使通過任務管理器),並允許他們運行代碼進行清理等。如果程序正在訪問非託管資源(文件,流,數據庫等)並且未明確處理清理那些可能會讓他們在記憶中散落。
這是否也適用於動態分配內存?例如在C++中使用指針,並且無法處理突然終止進程? –
我相信這適用於任何程序 - 儘管O/S最終可能會清理內存。我不是100%確定,但我已經超過300年沒有在C++工作:-) – schmoopy