Q:一块代码中有大于1的资源的分配时,很容易造成跳过资源的释放;从而导致资源的泄露。
A:利用goto语句的跳转特点可以一定程度上解决这个问题
example:
FILE *f1=open();
if(NULL==f1)
{
goto error1;
}
FILE *f2=open();
if(NULL==f2)
{
goto error2;
}
//如果跳到error2;会先执行error2再执行error1
error2:
if(NULL !=f2)
{
fclose(f2);
}
error1:
if(NULL !=f1)
{
fclose(f1);
}
return;第二种方法,(我觉得更好)
FILE *f1=open();
if(NULL==f1)
{
goto error;
}
FILE *f2=open();
if(NULL==f2)
{
goto error;
}
//如果跳到error2;会先执行error2再执行error1
error:
if(NULL !=f2)
{
fclose(f2);
}
if(NULL !=f1)
{
fclose(f1);
}
return;