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

yet*_*ker 0 c

int main(void)
{
    int *a = malloc(10);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

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

Abh*_*ogi 14

从联机帮助页:

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

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

realloc(a, 0);
Run Code Online (Sandbox Code Playgroud)

  • +1,这让我想起了glibc bugzilla上的UD着名线程http://sourceware.org/bugzilla/show_bug.cgi?id=12547 (2认同)