掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
mallocで確保した領域の後に続けてreallocで領域を作るには? (ID:60827)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>char* p = malloc(10); の後に >p = realloc(p,20); とやればいいと勝手に思ってました。 realloc の前後で p の値 (すなわち p が指すメモリ) は変わる可能性があります。 realloc が成功するなら提示コードで十分。 失敗する場合に元の p の値が失われてしまうので、リカバリー不能になってしまうですね。 Blue さんのサンプルのように realloc の結果は別の変数に受け取るのが定石です。 realloc の成功を確認した上で p を更新しましょう。 うまくいった場合には (新しいほうの) p が大きくなったメモリ領域を指してますから p[11] や p[19] をアクセスすることができます。 アドレスが動いても旧データは残っていますから心配しなくて大丈夫。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.