[問題] free()和delete的問題

看板C_and_CPP (C/C++)作者 (DOGE)時間6年前 (2019/09/13 16:02), 編輯推噓7(7014)
留言21則, 7人參與, 5年前最新討論串1/1
在動態配置記憶體時,C用malloc(),C++用new 而不管是在網路還是書籍上,都會強調必須在生命週期結束後將記憶體歸還回去 那麼如果是在程式crash或是我們手動將程式結束掉的情況下 這些動態配置的記憶體是os回收掉還是C&C++做回收? ----- Sent from JPTT on my Asus ASUS_I01WD. -- 標題 [洽特] 台灣雞翅國際股份有限公司?? 這麼奇特的名字是怎麼來的呢? 有人有八卦嗎????

09/07 19:42,
給你的雞雞一雙翅膀 跨國界尻槍
09/07 19:42

09/07 19:48,
雞翅→G翅→G WING→GG WIN→GG double IN→GGININ
09/07 19:48
-- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.12.44.76 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1568361730.A.0EF.html

09/13 17:45, 6年前 , 1F
os
09/13 17:45, 1F

09/13 20:17, 6年前 , 2F
Crash 由 OS 收屍,手動結束有可能程式自己會處理後事
09/13 20:17, 2F

09/13 20:17, 6年前 , 3F
當然程式如果沒有處理/來不及處理還是 OS 會收拾殘局
09/13 20:17, 3F

09/13 20:22, 6年前 , 4F
具體的說就是用 atexit() 設定「辦後事」的 function
09/13 20:22, 4F

09/13 20:23, 6年前 , 5F
GUI 程式也可以設定按 X 或被 OS 通知結束時的行為
09/13 20:23, 5F

09/13 20:28, 6年前 , 6F
那有沒有不會收屍的OS?有啊,程式crach就整台電腦當機
09/13 20:28, 6F

09/13 20:34, 6年前 , 7F
不當機還是會有OS不幫忙收拾的狀況 有些OS就是沒做
09/13 20:34, 7F

09/13 22:40, 6年前 , 8F
windows在O3層虛擬記憶體定址的話,OS直接就收掉
09/13 22:40, 8F

09/13 22:41, 6年前 , 9F
如果是寫驅動程式的話,就要很小心了
09/13 22:41, 9F

09/14 12:23, 6年前 , 10F
回答問題:由程式回收
09/14 12:23, 10F

09/15 18:51, 6年前 , 11F
OS會收,通常會考慮leak的狀況是,很多程式其實是一直在背
09/15 18:51, 11F

09/15 18:51, 6年前 , 12F
景跑不會結束,如果不free就會一直吃memory ,直到被termina
09/15 18:51, 12F

09/15 18:51, 6年前 , 13F
te
09/15 18:51, 13F

11/17 14:18, 5年前 , 14F
你一般user space的程式在執行就是OS allocate 一塊記憶
11/17 14:18, 14F

11/17 14:18, 5年前 , 15F
體給你 你不管怎麼用不管靜態或動態配置都不可能超出那塊
11/17 14:18, 15F

11/17 14:18, 5年前 , 16F
, 程式關閉後OS自然把整塊記憶體回收 所以不用擔心會有
11/17 14:18, 16F

11/17 14:18, 5年前 , 17F
任何memory leak影響到整個系統
11/17 14:18, 17F

11/17 17:03, 5年前 , 18F
我上面講的可能不太對 應該說你程式跟OS要過多少記憶體OS
11/17 17:03, 18F

11/17 17:03, 5年前 , 19F
都有紀錄 所以程式關閉時OS一定會把所有配給該程式的記憶
11/17 17:03, 19F

11/17 17:03, 5年前 , 20F
體收回 但是如果你程式沒關閉又一直要記憶體 OS當然不會
11/17 17:03, 20F

11/17 17:03, 5年前 , 21F
去回收 才會導致所謂的memory leak
11/17 17:03, 21F
文章代碼(AID): #1TUqq23l (C_and_CPP)
文章代碼(AID): #1TUqq23l (C_and_CPP)