关于C中的realloc函数的简单问题:如果我使用realloc来缩小指针所指向的内存块,那么"额外"内存是否会被释放?还是需要以某种方式手动释放?
例如,如果我这样做
int *myPointer = malloc(100*sizeof(int));
myPointer = realloc(myPointer,50*sizeof(int));
free(myPointer);
Run Code Online (Sandbox Code Playgroud)
我会有内存泄漏吗?
的手册页中realloc()说:
该
realloc()函数将指向的存储块的大小更改ptr为size字节。从区域开始到新旧大小的最小值之间的内容将保持不变。如果新的大小大于旧的大小,则不会初始化添加的内存。
但是,手册页没有说明如果新大小小于旧大小会发生什么。例如,如果我有以下代码:
ptr = realloc(ptr, nsize); // Where nsize < the original size and ptr is of type void **
Run Code Online (Sandbox Code Playgroud)
如果原始大小为size,是否表示ptr + nsize + 1仍包含分配的条目?
任何帮助表示赞赏。