我可以从阵列的位置重新分配吗?

3 c arrays pointers realloc

说我宣布了array[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}.后来我想要它array[8] = {2, 3, 4, 5, 6, 7, 8, 9}.

解散前2个元素.所以它会开始array[2].重新分配arrayarray[2].

我试过了:

int *array=(int*)malloc(10*sizeof(int));
...//do stuffs
array=(int*)realloc(array[2],8*sizeof(int));
Run Code Online (Sandbox Code Playgroud)

它没用.既不使用&array[2], *array[2]也不创建辅助阵列,将Array重新分配给AuxArr而不是free(AuxArr).

我可以开灯吗?

Bra*_*ker 6

您只能重新分配指向已分配的内存块的指针.因此,您可以重新分配(数组),但不能使用数组[2],因为它是指向内存块中间位置的指针.

你可能想尝试memmove.

编辑:为了回应ThingyWotsit的评论,在将你想要的数据记忆到数组的前面之后,你可以重新分配以丢弃尾端.