在 C 语言中,重新分配结构需要遍历整个结构体,找到需要重新分配的内存,然后将其分配并复制到新的内存位置上。以下是一个简单的示例代码:
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int *arr;
int size;
} Array;
void reallocateArray(Array *arr, int size) {
int newSize = size + 1;
int *newArr = (int *) realloc(arr->arr, newSize * sizeof(int));
if (newArr == NULL) {
printf("Failed to allocate memory!
");
exit(1);
}
arr->arr = newArr;
arr->size = newSize;
}
int main() {
Array arr;
arr.arr = malloc(10 * sizeof(int));
arr.size = 10;
// 使用 reallocateArray 函数重新分配结构
reallocateArray(&arr, 20);
// 打印分配后的结构信息
printf("Array size: %d
", arr.size);
for (int i = 0; i < arr.size; i++) {
printf("%d ", arr.arr[i]);
}
printf("\n");
free(arr.arr);
return 0;
}
在上面的代码中,我们定义了一个名为 Array
的结构体,包含一个指向整数的指针和整型大小。我们定义了一个名为 reallocateArray
的函数,该函数接受一个指向 Array
结构体的指针和需要重新分配的大小。在函数内部,我们使用 realloc
函数重新分配内存,并将其指针赋值给原结构体的指针。最后,我们在 main
函数中使用 reallocateArray
函数重新分配结构体,并打印分配后的结构体信息。
需要注意的是,在使用 realloc
函数时,如果重新分配的内存大小小于原来分配的内存大小,有可能会丢失原来的内存数据。因此,在分配内存时,需要确保重新分配的内存大小大于原来的内存大小。
领取专属 10元无门槛券
手把手带您无忧上云