【发布时间】:2012-03-28 06:01:06
【问题描述】:
例如, 我需要 malloc 两块内存,所以:
void *a = malloc (1);
if (!a)
return -1;
void *b = malloc (1);
if (!b)
{
free (a);
return -1;
}
请注意,如果第二个 malloc 失败,我必须先释放“a”。问题是,如果有很多这样的 malloc 和错误检查,这可能会非常混乱,除非我使用臭名昭著的“goto”子句并仔细安排 free 的顺序和标签:
void *a = malloc (1);
if (!a)
goto X;
void *b = malloc (1);
if (!b)
goto Y;
return 0; //normal exit
Y:
free (a);
X:
return -1;
对于这种情况,您有什么更好的解决方案吗?提前致谢。
【问题讨论】:
-
+1 一旦我也遇到了同样的问题,但完成了“乱码”的工作..!!
标签: c memory-management