gpt4 book ai didi

c - Malloc 和 Realloc 结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:00:37 24 4
gpt4 key购买 nike

我正在定义一种结构

typedef struct structs{
int freeSpace;
} structs;

我正在创建一个指向结构的指针

structs* arrayOfStructs;

我正在为该结构的大小为 5 的数组分配内存

arrayOfStructs = malloc(5 * sizeof (arrayOfStructs));
arrayOfStructs[3].freeSpace = 99;
printf("\n%d", arrayOfStructs[3].freeSpace);

在某些时候,我将该内存重新分配给大小为 10 的数组

arrayOfStructs = realloc(arrayOfStructs, 10 * sizeof (arrayOfStructs));
arrayOfStructs[8].freeSpace = 9;
printf("\n%d", arrayOfStructs[8].freeSpace);

在这里,我在数组的第 13 位设置了自由空间 17,我希望它只有 10 个位置。

arrayOfStructs[13].freeSpace = 17;
printf("\n%d", arrayOfStructs[13].freeSpace);
free(arrayOfStructs);

为什么会这样?我做错了什么?

最佳答案

程序的行为未定义

您正在访问不属于您的内存。

(很可能发生的情况是 realloc 从操作系统获取的内存比实际需要的多)。

关于c - Malloc 和 Realloc 结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41146751/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com