在这个简单的代码中,我应该注意默认情况下的内存释放以避免内存泄漏还是可以使用分配的内存? 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;
}
最佳答案
不,longjmp
不会恢复动态内存分配。
关于c - 应该在 longjmp() 之后调用 free() 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28472868/