システム プログラミング コースの宿題を出しました。私がopencvを使用するまで(まだ初心者でした)、すべてがメモリリークなしでうまくいきました。
基本的に、学生クラスとコース クラスがあり、正しいタイプの学生 (コンピューター サイエンスの学生、PG の学生など) を正しいコース (選択科目および PG/CS コース) に割り当てる必要があります。
やるべきことはすべてやったので、最後のステップは、カラーで卒業した人の画像とグレースケールで卒業しなかった人の画像を表示することです。全部やった。
画像を開き、画像をファイルに保存し、新しい画像を初期化し、RGB への変換やグレースケールへの変換などのすべての機能を処理する imagehandler クラスを作成しました。
このイメージハンドラー クラスには、次のようなイメージのフィールドがあります。
cv::Mat m_image;
ここで、学生クラス内で、各学生が imagehandler オブジェクトを持つようにし、そのオブジェクトに自分のイメージを保存します。
imagehandler クラスでデストラクタも作成しました。
imagehandler::~imagehandler(){
m_image.release();
}
opencv のステップを開始する前 (opencv をインストールして、コードに必要なものを埋め込む前) には、メモリ リークはまったくありませんでした。opencv ステップをプログラムした (そしてすべてが機能した) 後、重大なリークが発生しました。
valgrind のログファイルは次のとおりです (大きすぎてここに表示されないため、ペースト ビンに入れなければなりませんでした): valgrind.log
エラーは主に、画像の読み取り、画像の保存、画像のサイズ変更、RGBまたはグレースケールへの変換...すべてのopencv関連のリークです。