回答を検索しましたが、それを検索できませんでした。動的に割り当てられた構造体を再割り当て
私は動的に割り当てられた構造体を持っています。つまり、構造体自体とそのメンバーの一部が割り当てられます。同様:
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
経由で古いコンテンツにアクセスできますか?何らかの記憶喪失がありますか?
私は誰かが何が起きるかを検証して、構造全体をreallocすればメモリ内にどのように見えるのかを知りたいと思います。私は見て、どのようにstructsのようなメモリのように見える私は1トンの記事を読んだが、時にはそれはいくつかのポインタを追加し、深いレベル(例のためにダブルポインタを使用して)後に少し混乱するでしょう。
そして、私はダブルポインターを使用すると、何が起こるでしょうか?**ptr2
ポインタを保持して構造体を指すようにしてから、さらに多くのポインタを保持するために**ptr2
を再割り当てしますか?
何ですか? '私は私の構造体を再配置する場合' - あなたの構造体は固定サイズです! –
「メモリ内でどのように見えるか」と尋ねるときはいつでも、これを実行しているプラットフォーム上でデバッガを起動させるための肋骨のしっかりとしたジャブと考えてください。 *記憶を見て*。どのように実際に "外見"が他のどこよりも優れていることが実証されています。 – WhozCraig
@ Martins James-私の構造体は固定されていません。私は私の構造体にメモリを追加する関数を持っています: 'void allocStruct(DataUse ** ptr){ここにメモリを割り当てる}'。 – Name