我正在定义一种结构
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
从操作系统中获得更多的内存)。