相关疑难解决方法(0)

如何在C中正确处理malloc失败,尤其是当有多个malloc时?

假设这是我的代码的一部分:

 int foo()
 {  
    char *p, *q ;
    if((p = malloc(BUFSIZ)) == NULL) {
        return ERROR_CODE;
    }
    if((q = malloc(BUFSIZ)) == NULL) {
        free(p)
        return ERROR_CODE;
    }
    /* Do some other work... */

    free(p);
    free(q);  
 }
Run Code Online (Sandbox Code Playgroud)

由于第一个可能malloc成功但第二个失败,我free(p)在第二个"错误处理程序"中使用.但是,如果有更多malloc的,如果我想修改代码(调整他们的订单,添加或删除一些代码malloc)怎么办?

我知道在C++中有RAII和异常安全等等.但总的来说,malloc在C中处理故障的正确方法是什么?(也许用一些goto?)

c memory memory-leaks memory-management

32
推荐指数
3
解决办法
1万
查看次数

标签 统计

c ×1

memory ×1

memory-leaks ×1

memory-management ×1