C-结构的malloc和Realloc阵列



我正在定义一种结构

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从操作系统中获得更多的内存)。

相关内容

  • 没有找到相关文章

最新更新