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

看板C_and_CPP (C/C++)作者 (浪跡天涯)時間6年前 (2019/09/09 13:46), 編輯推噓8(8010)
留言18則, 8人參與, 6年前最新討論串1/1
開發環境 : win10 / vs2019 c/c++ 疑問: 請問用alloca申請的stack RAM在函式返回後何時會被回收 ? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.139.150 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1568007982.A.9CC.html

09/09 15:08, 6年前 , 1F
alloca在函式返回後會被自動釋放八
09/09 15:08, 1F

09/09 16:30, 6年前 , 2F
如果你問的是儲存local variable 的stack frame 確實是retur
09/09 16:30, 2F

09/09 16:30, 6年前 , 3F
n 就釋放 如果你問的是dynamic allocate 除非明確做free的
09/09 16:30, 3F

09/09 16:30, 6年前 , 4F
動作 否則要等到程式執行結束 作業系統會幫忙回收
09/09 16:30, 4F

09/09 22:35, 6年前 , 5F
Allocate是放heap , 沒有所謂alloc 在stack的事
09/09 22:35, 5F

09/10 03:12, 6年前 , 6F

09/10 03:12, 6年前 , 7F
alloca 確實是放 stack 喔, 所以一樓正解
09/10 03:12, 7F

09/10 03:13, 6年前 , 8F
可以把它想像成跟該函數的區域變數一起消失
09/10 03:13, 8F

09/10 06:23, 6年前 , 9F
L大好神 我第一次看到這API xD
09/10 06:23, 9F

09/10 09:18, 6年前 , 10F
alloca 不在標準內,雖然很多平台都有
09/10 09:18, 10F

09/10 12:46, 6年前 , 11F
alloca 看起來是函式,實際上是告訴編譯器多配置 stack
09/10 12:46, 11F

09/10 12:47, 6年前 , 12F
上多少空間的指示命令,編譯器在編譯期就能靜態算出要多
09/10 12:47, 12F

09/10 12:47, 6年前 , 13F
分配多大的空間給當前的 stack frame。
09/10 12:47, 13F

09/10 12:48, 6年前 , 14F
這單純是關係到函式進出點 stack pointer 跳多遠而已。
09/10 12:48, 14F

09/10 17:44, 6年前 , 15F
我也是第一次看 我以爲是allocate的縮寫
09/10 17:44, 15F

09/10 18:24, 6年前 , 16F
之前看到也以為作用在heap上...讓我找了好久
09/10 18:24, 16F

09/10 21:09, 6年前 , 17F
我以為這三兄弟malloc calloc alloca大家都耳熟能詳XD
09/10 21:09, 17F

09/10 21:13, 6年前 , 18F
我以為三兄弟是malloc callow realloc?
09/10 21:13, 18F
文章代碼(AID): #1TTUSkdC (C_and_CPP)
文章代碼(AID): #1TTUSkdC (C_and_CPP)