簡體   English   中英

Malloc和Realloc結構數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM