[問題] 用alloca申請RAM,函式返回後沒有釋放

作者: bashinan (浪跡天涯)   2019-09-09 13:46:20
開發環境 : win10 / vs2019 c/c++
疑問: 請問用alloca申請的stack RAM在函式返回後何時會被回收 ?
作者: wei115 (ㄎㄎ)   2019-09-09 15:08:00
alloca在函式返回後會被自動釋放八
作者: Gway (我愛的你 也愛我 好嗎?)   2019-09-09 16:30:00
如果你問的是儲存local variable 的stack frame 確實是return 就釋放 如果你問的是dynamic allocate 除非明確做free的動作 否則要等到程式執行結束 作業系統會幫忙回收
作者: ando5566 (風雲變色)   2019-09-09 22:35:00
Allocate是放heap , 沒有所謂alloc 在stack的事
作者: LPH66 (-6.2598534e+18f)   2019-09-10 03:12:00
http://man7.org/linux/man-pages/man3/alloca.3.htmlalloca 確實是放 stack 喔, 所以一樓正解可以把它想像成跟該函數的區域變數一起消失
作者: Gway (我愛的你 也愛我 好嗎?)   2019-09-10 06:23:00
L大好神 我第一次看到這API xD
作者: Bencrie   2019-09-10 09:18:00
alloca 不在標準內,雖然很多平台都有
作者: tinlans ( )   2019-09-10 12:46:00
alloca 看起來是函式,實際上是告訴編譯器多配置 stack上多少空間的指示命令,編譯器在編譯期就能靜態算出要多分配多大的空間給當前的 stack frame。這單純是關係到函式進出點 stack pointer 跳多遠而已。
作者: ando5566 (風雲變色)   2019-09-10 17:44:00
我也是第一次看 我以爲是allocate的縮寫
作者: b0920075 (Void)   2019-09-10 18:24:00
之前看到也以為作用在heap上...讓我找了好久
作者: Killercat (殺人貓™)   2019-09-10 21:09:00
我以為這三兄弟malloc calloc alloca大家都耳熟能詳XD
作者: Gway (我愛的你 也愛我 好嗎?)   2019-09-10 21:13:00
我以為三兄弟是malloc callow realloc?

Links booklink

Contact Us: admin [ a t ] ucptt.com