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

后端 未结 3 636
闹比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:02

    It will be freed at end of function, but since you call alloca() inside the loop you'll likely get stack overflow. If size doesn't change within the function you should call alloca() before the loop.

提交回复
热议问题