首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C中重新分配结构

在 C 语言中,重新分配结构需要遍历整个结构体,找到需要重新分配的内存,然后将其分配并复制到新的内存位置上。以下是一个简单的示例代码:

代码语言: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 函数时,如果重新分配的内存大小小于原来分配的内存大小,有可能会丢失原来的内存数据。因此,在分配内存时,需要确保重新分配的内存大小大于原来的内存大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券