Joe*_*een 10 c arrays trim shrink
刚刚开始学习C并遇到了以下问题:
我需要缩小C中的整数数组,最后删除元素.通过删除我的意思是释放.常见的答案是为较小的数组分配新的内存,然后将原始数组的所有项(-items to remove)复制到新分配的内存中,然后free()原始数组.
因为我必须处理非常大的数组,所以我宁愿跳过复制部分.
是否有可能创建一个指向"接近原始数组末尾"的指针变量,其大小为"数组末尾 - 接近结尾",然后释放该指针?
提前致谢
Sir*_*ius 5
C标准库中的realloc函数可能就是您想要的.
在您的情况下,它可能不执行任何复制操作,因为内存管理器没有理由分配新的内存区域.只有旧旧大小之间的差异可能被系统回收为可用内存.
如果您使阵列变大,则会发生复制,因为malloc和朋友不保证"当前"区域之后的内存实际上是空闲的.如果是,那就没关系,当前的内存分配将会扩展.如果没有,则需要找到更大的可用内存区域,并且可以在内存中的任何位置分配它.
归档时间:
13 年,6 月 前
查看次数:
14165 次
最近记录: