gpt4 book ai didi

c - 收缩 int 数组 C

转载 作者:太空狗 更新时间:2023-10-29 16:55:56 26 4
gpt4 key购买 nike

刚开始学C,遇到以下问题:

我需要在 C 中缩小一个整数数组,删除末尾的元素。通过删除我的意思是释放。常见的答案是为较小的数组分配新内存,然后将原始数组的所有项(-items to remove)复制到新分配的内存中,然后 free() 原始数组。

因为我必须处理非常 大数组,所以我宁愿跳过复制部分。

是否可以创建一个指向“接近原始数组末尾”且大小为“数组末尾 - 接近末尾”的指针变量,然后释放该指针?

提前致谢

最佳答案

realloc C 标准库中的函数可能就是您想要的。

在你的情况下,它很可能不执行任何复制操作,因为内存管理器没有理由分配新的内存区域。只有新旧大小之间的差异可能被系统回收为可用内存。

复制会发生在你让你的数组变大的情况下,因为 malloc 和 friend 们不保证“当前”区域之后的内存实际上是空闲的。如果是,那没关系,扩大当前的内存分配。如果不是,则需要找到更大的可用内存区域,并且它几乎可以分配到内存中的任何位置。

关于c - 收缩 int 数组 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12184837/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com