我在定义一种结构

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);

在这里,我将自由空间17设置在数组的位置13,我希望只有10个位置。
arrayOfStructs[13].freeSpace = 17;
printf("\n%d", arrayOfStructs[13].freeSpace);
free(arrayOfStructs);

为什么这样有效我做错什么了?

最佳答案

程序的行为未定义。
你正在访问不属于你的内存。
(很可能发生的情况是realloc从操作系统获得的内存比实际需要的多)。

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

10-09 13:26