【发布时间】:2019-08-04 04:00:55
【问题描述】:
realloc() 的 man 页面说:
realloc()函数将ptr指向的内存块大小更改为size字节。内容将在从区域开始到新旧大小的最小值的范围内保持不变。如果新大小大于旧大小,则不会初始化添加的内存。
但是,手册页没有说明如果新大小小于旧大小会发生什么。例如,如果我有以下代码:
ptr = realloc(ptr, nsize); // Where nsize < the original size and ptr is of type void **
如果原始大小为size,这是否意味着ptr + nsize + 1 仍包含已分配的条目?
感谢任何帮助。
【问题讨论】:
-
在从区域开始到新旧尺寸的最小值的范围内内容将保持不变 - 它是一半你的引文。
-
@Jabberwocky 不一定只是缩写。它仍然可以在不同的地方重新分配。
-
删除帐号的心理提示 :)
-
除非
ptr来自不同的范围,否则你们都同意void **ptr = realloc(ptr,size)是一个大问题,对吧? -
ptr参数可以是什么其他范围? 错误并不差,因为传递的参数必须是NULL或先前分配的指针。
标签: c dynamic-memory-allocation realloc