相关疑难解决方法(0)

使用realloc缩小分配的内存

关于C中的realloc函数的简单问题:如果我使用realloc来缩小指针所指向的内存块,那么"额外"内存是否会被释放?还是需要以某种方式手动释放?

例如,如果我这样做

int *myPointer = malloc(100*sizeof(int));
myPointer = realloc(myPointer,50*sizeof(int));
free(myPointer);
Run Code Online (Sandbox Code Playgroud)

我会有内存泄漏吗?

c memory-management realloc

26
推荐指数
3
解决办法
2万
查看次数

内存缩小时的realloc()行为

手册页中realloc()说:

realloc()函数将指向的存储块的大小更改ptrsize字节。从区域开始到新旧大小的最小值之间的内容将保持不变。如果新的大小大于旧的大小,则不会初始化添加的内存。

但是,手册页没有说明如果新大小小于旧大小会发生什么。例如,如果我有以下代码:

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仍包含分配的条目?

任何帮助表示赞赏。

c realloc dynamic-memory-allocation

4
推荐指数
2
解决办法
162
查看次数