Memory allocated with alloca gets freed at end of function or at end of scope?

后端 未结 3 614
闹比i
闹比i 2021-01-17 16:36

If I have a function like this:

void bla(int size) {
    while(b){
        char tmp[size];
        ......
    }
}

tmp gets freed at each it

3条回答
  •  爱一瞬间的悲伤
    2021-01-17 17:09

    Memory allocated with alloca() is deallocated when the function exits. See for instance the manual page for more information.

    Regarding the former case, of just an auto-variable in the scope, I'm not sure how you would define that it gets "freed". You can't reference it outside of the scope that defines it, and if it had an initializer it would get re-initialized on each iteration.

提交回复
热议问题