相关疑难解决方法(0)

为什么使用alloca()不被视为良好做法?

alloca()在堆栈上而不是在堆上分配内存,如同的情况一样malloc().所以,当我从例程返回时,内存被释放.所以,实际上这解决了我释放动态分配内存的问题.释放分配的内存malloc()是一个令人头痛的问题,如果不知何故错过会导致各种内存问题.

alloca()尽管有上述特征,为什么不鼓励使用?

c malloc stack allocation alloca

381
推荐指数
18
解决办法
12万
查看次数

分配了alloca的内存在函数结束时或范围结束时被释放?

如果我有这样的功能:

void bla(int size) {
    while(b){
        char tmp[size];
        ......
    }
}
Run Code Online (Sandbox Code Playgroud)

tmp在while循环的每次迭代中被释放,对吗?

如果我写这个函数:

void bla(int size) {
    while(b){
        char* tmp = alloca(size);
        ......
    }
}
Run Code Online (Sandbox Code Playgroud)

tmp在范围结束时或功能结束时被释放?

c stack allocation

9
推荐指数
1
解决办法
1890
查看次数

标签 统计

allocation ×2

c ×2

stack ×2

alloca ×1

malloc ×1