我在C程序中遇到一个问题:我想从动态数组中释放第一个元素,但我不知道是否有可能,我也不知道该怎么做。 例如,如果我分配一个由10个整数组成的数组A,如下所示:
No
是否可以释放数组的第一个位置?以何种方式?
我必须优化程序,以免忽略第一个元素或类似内容,int *A;
A=(int*)malloc(sizeof(int)*10);
会变得很慢。
答案 0 :(得分:2)
您不能“释放”已分配存储块的单个部分。 如果要“忽略”第一个元素,可以使用A + 1鞭点指向第二个元素。
答案 1 :(得分:0)
分配内存时,无法取消分配一部分内存。它必须是整个块。更具体地说,您只能将free
/ malloc
/ calloc
返回的内容完全传递给realloc
。
您可以执行的操作是使用realloc
来调整内存区域的大小,但这不是您想做的太频繁的事情,因为它会影响性能。一个好的规则是,要扩展时将大小增大一倍,而收缩时将大小减小一半。