作者d630200x (DOGE)
看板C_and_CPP
標題[問題] free()和delete的問題
時間Fri Sep 13 16:02:06 2019
在動態配置記憶體時,C用malloc(),C++用new
而不管是在網路還是書籍上,都會強調必須在生命週期結束後將記憶體歸還回去
那麼如果是在程式crash或是我們手動將程式結束掉的情況下
這些動態配置的記憶體是os回收掉還是C&C++做回收?
-----
Sent from JPTT on my Asus ASUS_I01WD.
--
標題 [洽特] 台灣雞翅國際股份有限公司??
這麼奇特的名字是怎麼來的呢? 有人有八卦嗎????
1F:推 sweetmiki: 給你的雞雞一雙翅膀 跨國界尻槍09/07 19:42
2F:推 qqq3892005: 雞翅→G翅→G WING→GG WIN→GG double IN→GGININ 09/07 19:48
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.44.76 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1568361730.A.0EF.html
3F:推 b0920075: os 09/13 17:45
4F:推 Schottky: Crash 由 OS 收屍,手動結束有可能程式自己會處理後事 09/13 20:17
5F:→ Schottky: 當然程式如果沒有處理/來不及處理還是 OS 會收拾殘局 09/13 20:17
6F:→ Schottky: 具體的說就是用 atexit() 設定「辦後事」的 function 09/13 20:22
7F:→ Schottky: GUI 程式也可以設定按 X 或被 OS 通知結束時的行為 09/13 20:23
8F:→ Schottky: 那有沒有不會收屍的OS?有啊,程式crach就整台電腦當機 09/13 20:28
9F:→ EricTCartman: 不當機還是會有OS不幫忙收拾的狀況 有些OS就是沒做 09/13 20:34
10F:推 stupid0319: windows在O3層虛擬記憶體定址的話,OS直接就收掉 09/13 22:40
11F:→ stupid0319: 如果是寫驅動程式的話,就要很小心了 09/13 22:41
12F:推 ando5566: 回答問題:由程式回收 09/14 12:23
13F:推 cphe: OS會收,通常會考慮leak的狀況是,很多程式其實是一直在背 09/15 18:51
14F:→ cphe: 景跑不會結束,如果不free就會一直吃memory ,直到被termina 09/15 18:51
15F:→ cphe: te 09/15 18:51
16F:推 arshuan: 你一般user space的程式在執行就是OS allocate 一塊記憶 11/17 14:18
17F:→ arshuan: 體給你 你不管怎麼用不管靜態或動態配置都不可能超出那塊 11/17 14:18
18F:→ arshuan: , 程式關閉後OS自然把整塊記憶體回收 所以不用擔心會有 11/17 14:18
19F:→ arshuan: 任何memory leak影響到整個系統 11/17 14:18
20F:推 arshuan: 我上面講的可能不太對 應該說你程式跟OS要過多少記憶體OS 11/17 17:03
21F:→ arshuan: 都有紀錄 所以程式關閉時OS一定會把所有配給該程式的記憶 11/17 17:03
22F:→ arshuan: 體收回 但是如果你程式沒關閉又一直要記憶體 OS當然不會 11/17 17:03
23F:→ arshuan: 去回收 才會導致所謂的memory leak 11/17 17:03