我试过释放内存而不使用free()如下
int *ptr = malloc(20);
realloc(ptr, 0);
Run Code Online (Sandbox Code Playgroud)
它会起作用吗?
das*_*ght 12
C语言标准在这一方面有所不同:在C90中传递零大小与调用相同free:
如果size为零,则先前在ptr分配的内存将被释放,就像调用free一样,并返回一个空指针.
但是,这在C99中发生了变化:
如果size为零,则返回值取决于特定的库实现:它可以是空指针,也可以是不应解除引用的其他位置.
请注意,不再需要释放; NULL当零尺寸通过时,两者都不返回.