我搜索了一個答案,但沒有設法找到一個。重新分配動態分配的結構
我有一個動態分配的結構,這意味着結構本身將被分配和它的一些成員。像:
typedef struct dataUse
{
char *num;
char *name;
char *position;
char *eMail;
float upload;
float download;
} DataUse;
DataUse *ptr = NULL;
現在我擁有的功能重新分配內存*ptr
,也爲,*position
,*eMail
。 name
,position
和eMail
的大小當然有所不同。
現在我明白了,重新分配某些內容會保留數據的原始地址並增加內存大小,或者如果它不能分配到同一空間,它將複製它的內容併爲該指針分配一個新地址。
現在在我的情況下,如果我重新分配我的struct
(*ptr
),並希望增加其大小,後者開始,這意味着我的結構內容將被複制,新的地址將簽署,將會發生什麼,*position
和*email
?我仍然可以通過ptr->num
訪問它們和舊內容。我會有什麼樣的記憶力減退?
我只希望有人來驗證會發生什麼並解釋,如果我重新分配整個結構,它將如何在內存中查找。我看過,結構看起來像在內存中的樣子我已經閱讀了大量的帖子,但有時在添加更多指針並進入更深層次(例如使用雙指針)後會有點混亂。
然後會發生什麼,如果我用雙指針來做 - **ptr2
來保持指向結構的指針,然後realloc **ptr2
來保存更多的指針?
什麼? '如果我重新分配我的結構' - 你的結構是固定大小的! –
任何時候當你發現自己在問「它在內存中的效果如何」的時候,可以考慮在你的平臺上啓動一個調試器,並在其中執行一個調試器,並且實際上*這樣做*:I.e. *看着記憶*。實際上「看起來」的方式比其他任何地方都更好。 – WhozCraig
@Martin James-我的結構不固定。我有一個函數,它會將內存添加到我的結構體ex:'void allocStruct(DataUse ** ptr){在此分配內存}'。 – Name