[问题] 用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