我處於項目的中間,我試圖使用malloc()
和realloc()
。我知道當我使用malloc時,它可以工作,但是當我使用realloc時,它根本不會改變已分配內存的數量。我一直認爲realloc會重新分配你已經配對的內存。內存不重新分配
以下是我有:
這包括:
#include <stdlib.h>
我有一個結構:
struct student {
int age;
int numOfClasses;
int gender; //0 male; 1 female
} student;
當我想用malloc使這些結構的7,我會使用此行代碼:
student stud* = (structure*) malloc(7*sizeof(student));
此行可行。該代碼行採用結構的大小和7倍數。總之,這將獲取足夠的內存來創建7個結構的數組。現在
,如果我想改變這種狀況到8,我會做到這一點,其中A
是以前的malloc內存,並且B
是新malloced(或realloced)內存:
這裏我如何在代碼中:
stud = (student*)realloc(stud, 8*sizeof(student));
從我所知道的,realloc在第二個參數和mallocs中獲取該變量的內存量。然後,它需要指針(或先前的malloced),並儘可能地從給定的指針中填充剛纔的malloced內存。當然,第二個參數必須大於以前的malloced大小,否則stud
會在最後失去一些內存。現在這是我的問題所在。當我打電話給上面的行時,它不會改變任何東西。 malloced數組仍然是7的長度。我也很確定,我有足夠的內存來重新分配。
我正在做這個對嗎?我的問題在哪裏?
是什麼讓你認爲malloced數組的長度仍然是7? – 2013-03-08 13:02:37
這與你的問題沒有關係,但我認爲你的結構對於'enum'完全有用。 – teppic 2013-03-08 13:16:16