valgrind で「確実に失われた」バイト数が 1K を超えていない Qt GUI アプリを作成できませんでした。私はこれを実験して、QMainWindow を拡張する QWidget を 1 つだけ表示する最小限のアプリを作成しました。QApplication オブジェクトを表示せずに、または実行せずに、またはその両方を作成するだけですが、常にリークします。
これを理解しようとして、X11またはglibcにバグがあるため、またはvalgrindが誤検知を与えるためであると読みました。また、あるフォーラム スレッドでは、チュートリアルで行われているように、メイン関数で QApplication オブジェクトを作成し、オブジェクトの exec() 関数を返すことは、GUI を作成するための「単純化された」方法であることが暗示されているようです (必ずしも良い方法ではありません)。 、 多分?)。
valgrind の出力では、実際に libX11 と libglibc、さらに libfontconfig について言及されています。残りのメモリ損失である 5 つの損失レコードは、 の??? in libQtCore.so
間に発生しQLibrary::setFileNameAndVersion
ます。
このようなことが起こらないようにする GUI アプリを作成するためのより適切な方法があるとすれば、それは何ですか? また、valgrind の出力のいずれかが単なるノイズである場合、正しいものを抑制する抑制ファイルを作成するにはどうすればよいでしょうか?
編集:コメントと回答ありがとうございます!
失われた数 kB 自体については心配していませんが、エラーの複数の画面をフィルター処理する必要がなく、通常は valgrind から「OK」を取得できる場合は、自分のメモリ リークを簡単に見つけることができます。そして、警告を抑制するつもりなら、それが何であるかを知っておくべきですよね?
リークがどのように受け入れられるかを見るのは興味深いことです!