在这个简单的代码中,我应该注意默认情况下的内存释放以逃避内存泄漏,还是可以使用已分配的内存? longjmp还会还原内存分配吗?
#include <setjmp.h>
#include <stdlib.h>
#include <stdio.h>
int main(int argc, const char* argv)
{
jmp_buf jmpbuf;
int *p=NULL;
switch(setjmp(jmpbuf)){
case 0:
p=(int *) malloc(10*sizeof(int));
printf("%p\n",p);
longjmp(jmpbuf,1);
break;
default:
printf("%p\n",p);
free(p);
}
return 0;
}
答案 0 :(得分:3)
longjmp将恢复“堆栈”变量的值(在本例中为“p”)。但是,在此示例中存在两个问题:
答案 1 :(得分:2)
不,longjmp
不会还原动态内存分配。
答案 2 :(得分:0)