掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メモリの動的割り当てをするには? (ID:50407)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ポインタの「反復子(iterator)としての機能」と 「オブジェクトの別名(alias)としての機能」がごっちゃになっていますね。 int * base = 0; /* これはaliasとして利用 */ int count; for (count = 0; count < 5; ++ count) { int sum = 0; int * ptr; /* こっちはiteratorとして利用 */ base = realloc(base, sizeof(int) * (count + 1)); for (ptr = base; ptr != base + count; ++ptr) { sum += *ptr; } *ptr = sum + 1; } free(base); aliasに利用するポインタに対して加算等の演算を行ってはいけません。 malloc/calloc/reallocで得たポインタは,常にaliasの為にのみ使います。 iteratorの機能が必要であれば,そのポインタをコピーして用意する必要があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.