如何在不使用c中的free()的情况下释放内存

时间:2012-01-31 17:36:28

标签: c

int main(void)
{
    int *a = malloc(10);
    return 0;
}

如何在不使用free()的情况下释放内存?

2 个答案:

答案 0 :(得分:14)

从联系手册:

realloc()函数将ptr指向的内存块的大小更改为size字节。内容将在该地区开始的范围内保持不变    最新的尺寸。如果新大小大于旧大小,则不会初始化添加的内存。如果ptr为NULL,则调用为    对于所有大小值,等效于malloc(大小);如果size等于零,并且ptr不为NULL,则该调用等效于free(ptr)。除非ptr为NULL,否则它    必须由之前调用malloc(),calloc()或realloc()返回。如果指向的区域被移动,则完成免费(ptr)。

因此,您需要调用大小为0的realloc()。

realloc(a, 0);

答案 1 :(得分:-1)

alloca()在调用者的堆栈帧上分配内存,在返回时释放。此函数的行为不可移植,并且手册页本身表示不使用它。