通知
すべてクリア
Topic starter
2006年9月13日 5:52 PM
newでエリアを確保しているデータを再確保する際、
reallocを使用しても問題ないですか?
2006年9月13日 6:00 PM
これ以上の制約/条件がなくて、問題がないかと聞かれれば、
コンストラクトの問題があるのでダメです。
# std::vector::resize() 使うとか?
2006年9月14日 5:12 PM
既に書かれていますが、
newとdelete、mallocとfreeで対に考えるべきで
流れとしてreallocはmallocの流れなのでNGですね。
malloc系の流れでは、コンストラクタやデストラクタが呼ばれないので
ごっちゃにしちゃ駄目です。
newしているものに対してreallocに相当する処理がしたのなら
別に新しいサイズでnewして元の内容を新しい領域にコピーし、
古い領域をdeleteするような流れになると思います。
実際にはreallocの中では似たような事をやっていると思いますが、
それをそっくり自分でやる感じですね。
ただ、C++には可変長配列を扱うクラスがあるわけですから
そっちを使うのが正解だと思います。
Banさんがあげているのもそういう例ですね。