C の free() について質問があります。
構造体へのポインターがあるとします (ノード *ptr など)。それを解放した後、それを NULL に初期化し、malloc() または realloc() を使用して新しい場所を指すようにできますか?
例えば:
node *ptr=NULL;
ptr=realloc(ptr,sizeof(node)); //works exactly like malloc
/* Do some operations on ptr */
free(ptr);
ptr=NULL;
ptr=realloc(ptr,sizeof(node));
それは有効ですか、それとも問題を引き起こしますか。malloc の代わりに realloc を使用した理由は、すべての realloc() 呼び出しがループ内にあるためです (したがって、2 番目の引数の sizeof(node) の代わりに、実際には n*sizeof(node) であり、n は増加し続けます...この結果の配列の最後の場所には新しいデータが書き込まれます) ここで、ptr が指すメモリはループが終了するまで増加し続けます。その時点で、ptr が指すメモリ内のデータは必要ありません。それを解放するのが最善です。現在、これはすべて、もう 1 つの大きな (外側の) ループにネストされています。
助けてくれてどうもありがとう