Re: [問題] 有關malloc跟一般變數宣告的差別
看板C_and_CPP (C/C++)作者LoserOfLove (LOL)時間9年前 (2016/11/12 14:36)推噓6(8推 2噓 39→)留言49則, 11人參與討論串2/3 (看更多)
※ 引述《youtuuube000 (小孩)》之銘言:
: 開發平台(Platform): (Ex: Win10, Linux, ...)
: linux
: 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
: GCC
: 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
: 無吧(?
: 問題(Question):
: 各位好
: 我想要問一下
: 若在一般function宣告變數的話(e.q. int a=0;)
: 我知道隨著function結束執行return後 變數的記憶體也就會被釋放了
這是因為function被呼叫時,這些變數會被push到stack裡
而return後,則會被pop出來,也就是你所說的被釋放
: 但若是在main裡面宣告的話
: 此變數不就會一直保留著他的記憶體
: 而要等到程式結束後他才會被清空嗎?
是的,這是因為main本身也是一個function
只是他是第一個被呼叫的function
所以他最後才被pop,也就是你所說的程式結束
這是stack的特性,先進後出
: 但為什麼一般都沒有設計清空在main裡面宣告變數記憶體的機制呢?
會清空啊
同上所述,因為main是function,當他被return時
所有宣告的變數就會被pop出來
: 但malloc卻一定要強調要用free來清空呢?
: malloc宣告的變數不也會隨著程式結束後就被清空了嗎?
: 為什麼要強調一定要用free呢?
不是喔,malloc的變數不會隨著程式結束被清掉
如果沒有free掉,他會一直佔著記憶體,直到你重開機
而malloc的變數存放的地方稱作heap
建議你找本資料結構的書,看一下什麼是stack跟heap
就會有概念了
: 我知道在其他function定義的malloc一定要用free不然會有memory leak
: 但在main裡面宣告的malloc的變數都要強調要用free
: 為什麼int a=0;在main裡面卻不用釋放記憶體呢?
: 先謝謝回答了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 101.14.150.219
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1478932608.A.7E1.html
※ 編輯: LoserOfLove (101.14.150.219), 11/12/2016 14:39:24
※ 編輯: LoserOfLove (101.14.150.219), 11/12/2016 14:44:16
→
11/12 14:51, , 1F
11/12 14:51, 1F
→
11/12 14:56, , 2F
11/12 14:56, 2F
→
11/12 14:57, , 3F
11/12 14:57, 3F
→
11/12 14:59, , 4F
11/12 14:59, 4F
→
11/12 15:25, , 5F
11/12 15:25, 5F
→
11/12 15:47, , 6F
11/12 15:47, 6F
→
11/12 15:47, , 7F
11/12 15:47, 7F
→
11/12 15:47, , 8F
11/12 15:47, 8F
→
11/12 15:47, , 9F
11/12 15:47, 9F
→
11/12 15:47, , 10F
11/12 15:47, 10F
→
11/12 15:48, , 11F
11/12 15:48, 11F
→
11/12 15:48, , 12F
11/12 15:48, 12F
推
11/13 07:04, , 13F
11/13 07:04, 13F
→
11/13 07:04, , 14F
11/13 07:04, 14F
→
11/13 19:32, , 15F
11/13 19:32, 15F
→
11/13 19:37, , 16F
11/13 19:37, 16F
推
11/13 20:00, , 17F
11/13 20:00, 17F
→
11/13 20:00, , 18F
11/13 20:00, 18F
→
11/13 20:20, , 19F
11/13 20:20, 19F
→
11/13 20:21, , 20F
11/13 20:21, 20F
→
11/13 20:22, , 21F
11/13 20:22, 21F
推
11/14 00:39, , 22F
11/14 00:39, 22F
推
11/14 12:44, , 23F
11/14 12:44, 23F
噓
11/14 15:20, , 24F
11/14 15:20, 24F
→
11/14 15:57, , 25F
11/14 15:57, 25F
→
11/14 15:58, , 26F
11/14 15:58, 26F
推
11/14 17:32, , 27F
11/14 17:32, 27F
→
11/14 17:32, , 28F
11/14 17:32, 28F
→
11/14 18:19, , 29F
11/14 18:19, 29F
→
11/14 22:29, , 30F
11/14 22:29, 30F
→
11/14 22:29, , 31F
11/14 22:29, 31F
→
11/14 22:30, , 32F
11/14 22:30, 32F
→
11/14 22:30, , 33F
11/14 22:30, 33F
→
11/14 22:31, , 34F
11/14 22:31, 34F
推
11/14 22:39, , 35F
11/14 22:39, 35F
→
11/14 22:41, , 36F
11/14 22:41, 36F
→
11/14 22:42, , 37F
11/14 22:42, 37F
→
11/14 22:59, , 38F
11/14 22:59, 38F
→
11/14 22:59, , 39F
11/14 22:59, 39F
→
11/14 23:00, , 40F
11/14 23:00, 40F
→
11/14 23:01, , 41F
11/14 23:01, 41F
噓
11/15 06:57, , 42F
11/15 06:57, 42F
→
11/15 06:58, , 43F
11/15 06:58, 43F
→
11/15 06:58, , 44F
11/15 06:58, 44F
推
11/15 09:21, , 45F
11/15 09:21, 45F
推
11/15 09:39, , 46F
11/15 09:39, 46F
→
11/15 09:40, , 47F
11/15 09:40, 47F
→
11/15 09:40, , 48F
11/15 09:40, 48F
→
11/15 09:40, , 49F
11/15 09:40, 49F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章