[英]Malloc and Realloc array of structs
我正在定義一種結構
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
從操作系統獲得的內存比實際需要的更多)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.