我搜索了一个答案,但没有设法找到一个。重新分配动态分配的结构
我有一个动态分配的结构,这意味着结构本身将被分配和它的一些成员。像:
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