关于C中realloc函数的简单问题: 如果我使用 realloc 来缩小指针指向的内存块,“额外”内存是否会被释放?还是需要以某种方式手动释放它?
例如,如果我这样做
int *myPointer = malloc(100*sizeof(int));
myPointer = realloc(myPointer,50*sizeof(int));
free(myPointer);
我会不会有内存泄漏?
最佳答案
不,你不会有内存泄漏。 realloc
将简单地将其余部分标记为“可用”以供将来的 malloc
操作使用。
但是您稍后仍然需要free
myPointer
。顺便说一句,如果您使用 0
作为 realloc
中的大小,它将与 free
具有相同的效果 在某些实现。正如 Steve Jessop 和 R.. 在评论中所说,你不应该依赖它。
关于c - 使用 realloc 缩小分配的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7078019/