[問題] 關於記憶體free.....

看板C_and_CPP作者 (薯)時間14年前 (2009/10/22 19:20), 編輯推噓4(402)
留言6則, 4人參與, 最新討論串1/2 (看更多)
上課的時候 如果程式裡有寫到鏈節串列 老師都會叮嚀我們要記得把所有節點free掉 要不然一直test程式會一直吃掉記憶體 除非重開機 reboot (我同學說的,不知對否....) 那麼我們使用int float char .........等等的變數呢? 為什麼不需要特別把它們free掉呢? 我自己猜是因為當run 結束之後IDE會自動把這些保留字型態的變數free掉 不知道對不對..... 此外 我又想到 以後開發程式出來後並沒有IDE 當程式關掉之後並沒有東西幫我們free掉變數 請問是否要自己養成習慣 在程式結束後把所有變數free掉?? 如果猜錯的話就見笑了 Orz.... --  ̄ ̄ 幹你媽的洨王子 國家現在需要你 ⊙⊙ 歡迎加入 偉大消波塊的行列 @m◥ ψQSWEET ◢◣ 100個不嫌多 1個不嫌少 3Q!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.134.115.251

10/22 19:27, , 1F
你可以先了解一下stack和heap上的差異
10/22 19:27, 1F

10/22 19:28, , 2F
自動變數是長在前者 自己手動要的變數是長在後者
10/22 19:28, 2F

10/22 19:29, , 3F
stack會自己消長 heap你不還給OS就會一值占用到程式結束
10/22 19:29, 3F

10/22 19:30, , 4F
也不用重開機吧 關掉程式就好了~
10/22 19:30, 4F

10/22 19:31, , 5F
有malloc才要free
10/22 19:31, 5F

10/22 20:57, , 6F
malloc是跟OS要一塊記憶體來用 所以你程式結束OS會釋放
10/22 20:57, 6F
文章代碼(AID): #1Au3_ZeT (C_and_CPP)
文章代碼(AID): #1Au3_ZeT (C_and_CPP)