c - 应该在 longjmp() 之后调用 free() 吗?

标签 c memory-leaks malloc free setjmp

在这个简单的代码中,我应该注意默认情况下的内存释放以避免内存泄漏还是可以使用分配的内存? 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/

相关文章:

c - 如何创建 scanf() 的替代品

C++ 程序在两台不同的机器上编译。共享库在一个上正常工作。另一方面,类方法返回 NULL

objective-c - 这里有内存泄漏吗?

c - 在 C 中为二叉搜索树分配内存的段错误

c - 在用 malloc 创建的字符串中逐字符写入?

c - C 中的初级函数

c - C中的主要函数概念

android - 为什么图像由android :src in xml remain stored in heap?设置

c# - .Net 可执行文件中的内存泄漏工具

C - 如何 malloc 包含字符串和数组的结构?