作者lmr3796 (Toro)
看板b97902HW
標題[問題] 關於malloc函式
時間Mon Dec 8 02:22:57 2008
其實跟馬卡卡討論過滿久的
當下覺得好像有道理,但是回家思索了很久卻又想不通
就是
為什麼新增一個node時要用malloc來給他一塊記憶體
直接宣告為什麼不可以,我們宣告變數的時候也沒這樣啊
馬卡卡那時似乎是說,宣告變數的時候我們只能宣告一次,不能亂改之類的
然後我就問他了,但是遞回的時候如果用了局部變數不也是一直要記憶體嗎
那為什麼我們現在不能直接要而得用malloc呢呢
我記得我和馬卡卡的討論結束在:「你也可以用遞回做,只是很麻煩」之類的
當下想想似乎覺得也對,但回家後覺得怪怪的
又思索了很久
到底為什麼要用malloc來要一塊記憶體呢????
請各位強者們解惑
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.166.215.168
1F:推 sa072686:宣告在函數裡的區域變數,生命週期只到函數結束 12/08 02:28
2F:→ sa072686:因此直接宣告,在函數結束後就會被釋放掉, 12/08 02:28
3F:→ sa072686:但malloc()凹來的是永久的,直到被free()為止 12/08 02:29
4F:→ sa072686:所以有種競賽用較快的方式是宣告一個足夠大的陣列 12/08 02:29
5F:→ sa072686:然後需要malloc()時直接去這陣列抓還沒被用的元素 12/08 02:30
6F:→ sa072686:宣告在全域就可以了…這樣有解答你的疑惑嗎? 12/08 02:30
7F:→ lmr3796:但我的疑惑是在為什麼要凹,直接宣告不行嗎 12/08 02:31
8F:推 sa072686:可以,但要在全域,不然會隨著函數被free掉 12/08 02:33