作者bashinan (浪跡天涯)
看板C_and_CPP
標題[問題] 用alloca申請RAM,函式返回後沒有釋放
時間Mon Sep 9 13:46:20 2019
開發環境 : win10 / vs2019 c/c++
疑問: 請問用alloca申請的stack RAM在函式返回後何時會被回收 ?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.161.139.150 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1568007982.A.9CC.html
1F:推 wei115: alloca在函式返回後會被自動釋放八 09/09 15:08
2F:推 Gway: 如果你問的是儲存local variable 的stack frame 確實是retur 09/09 16:30
3F:→ Gway: n 就釋放 如果你問的是dynamic allocate 除非明確做free的 09/09 16:30
4F:→ Gway: 動作 否則要等到程式執行結束 作業系統會幫忙回收 09/09 16:30
5F:推 ando5566: Allocate是放heap , 沒有所謂alloc 在stack的事 09/09 22:35
7F:→ LPH66: alloca 確實是放 stack 喔, 所以一樓正解 09/10 03:12
8F:→ LPH66: 可以把它想像成跟該函數的區域變數一起消失 09/10 03:13
9F:推 Gway: L大好神 我第一次看到這API xD 09/10 06:23
10F:→ Bencrie: alloca 不在標準內,雖然很多平台都有 09/10 09:18
11F:→ tinlans: alloca 看起來是函式,實際上是告訴編譯器多配置 stack 09/10 12:46
12F:→ tinlans: 上多少空間的指示命令,編譯器在編譯期就能靜態算出要多 09/10 12:47
13F:→ tinlans: 分配多大的空間給當前的 stack frame。 09/10 12:47
14F:→ tinlans: 這單純是關係到函式進出點 stack pointer 跳多遠而已。 09/10 12:48
15F:推 ando5566: 我也是第一次看 我以爲是allocate的縮寫 09/10 17:44
16F:推 b0920075: 之前看到也以為作用在heap上...讓我找了好久 09/10 18:24
17F:→ Killercat: 我以為這三兄弟malloc calloc alloca大家都耳熟能詳XD 09/10 21:09
18F:推 Gway: 我以為三兄弟是malloc callow realloc? 09/10 21:13