从C中的动态数组释放单个元素

时间:2018-07-24 18:17:44

标签: c arrays malloc free

我在C程序中遇到一个问题:我想从动态数组中释放第一个元素,但我不知道是否有可能,我也不知道该怎么做。 例如,如果我分配一个由10个整数组成的数组A,如下所示:

No

是否可以释放数组的第一个位置?以何种方式? 我必须优化程序,以免忽略第一个元素或类似内容,int *A; A=(int*)malloc(sizeof(int)*10); 会变得很慢。

2 个答案:

答案 0 :(得分:2)

您不能“释放”已分配存储块的单个部分。 如果要“忽略”第一个元素,可以使用A + 1鞭点指向第二个元素。

答案 1 :(得分:0)

分配内存时,无法取消分配一部分内存。它必须是整个块。更具体地说,您只能将free / malloc / calloc返回的内容完全传递给realloc

您可以执行的操作是使用realloc来调整内存区域的大小,但这不是您想做的太频繁的事情,因为它会影响性能。一个好的规则是,要扩展时将大小增大一倍,而收缩时将大小减小一半。