假设这是我的代码的一部分:
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?)