私が扱っているコード ベースは、記述が不十分でメモリ リークが多いコード ベースです。
主に動的配列として使用される生のポインターを含む多くの構造体を使用します。
多くの場合、構造体は関数間で渡されますが、これらのポインターの割り当てと割り当て解除はランダムな場所に配置され、簡単に追跡/推論/理解することはできません。
それらのいくつかをクラスに変更し、それらのポインターをクラス自体によってRAIIされるようにしました。それらはうまく機能し、実装に時間を費やしたくないという理由だけで、これらのクラスのコピー構成とコピー代入を禁止したことを除けば、見栄えも悪くありません。
今私は考えています、私は車輪を再発明していますか?C スタイルの配列を std:array または std::valarray に置き換えてみませんか?
ヒープメモリと RAIIed を使用するため、std::valarray をお勧めします。std::array は、私の開発環境では (まだ) 利用できません。
Edit1 : std::array のもう 1 つのプラスは、これらの動的配列の大部分が POD (ほとんどが int16_t、int32_t、および float) 配列であり、数値 API によって作業が楽になる可能性があることです。
始める前に知っておくべきことはありますか?
私が考えることができる 1 つは、std::valarray または std::array を C スタイルの配列に変換する簡単な方法がない可能性があり、コードの一部はポインター演算を使用しており、データをプレーンな C として表示する必要があるということです。スタイルの配列。
他に何か?
編集2
最近この質問に出会いました。非常に悪い点std::valarray
は、C++11 まで安全にコピー代入できないことです。
その回答で引用されているように、C++03 以前では、ソースと宛先のサイズが異なる場合は UB です。