空のコンソールアプリケーションを作成し、その中にSTLコンテナを使用すると、アプリケーションが終了したときにFastMMがメモリリークを報告します。例えばC++ Builder 6のSTLコンテナでFastMMがメモリリークを報告します
、私はstd::vector<int>
main()
で作成する場合:
std::vector<int> v;
コンパイル、実行して、近くに、何のリークが報告されていません。
私が行う場合:
std::vector<int> v;
v.push_back(100);
私が手:
このアプリケーションがメモリをリークしています。小ブロック漏れは、次のとおり
309から340バイト:不明X 1
同様に、私が報告漏れを得る:
std::vector<int> v;
v.push_back(100);
v.clear();
、また漏れが上に報告される:
std::vector<int> v;
v.reserve(1);
std::deque
のようないくつかの容器では、その内容を変更するだけで十分であり、漏れがあるアプリケーションが終了すると、
誰でも何が起こっているのか説明できますか?私はBorland C++ Builder 6とFastMM4を使用します。私はFastMMOptions.inc
のさまざまな設定を変更していますが、私はまだこれらのリークが報告されているのを見ています。
[Borland C++ Builder 6](https://en.wikipedia.org/wiki/C%2B%2BBuilder#Version_history)は、2002年に登場したようです。現代のコンパイラ?より新しいバージョンのC++ Builder? 14年間はソフトウェア面で長い時間です。 – CoryKramer
私は、コードスニペットを与えられているので、コンパイラによる誤った 'std :: vector'実装以外のメモリリーク(周囲のコンテキストを参照することなく)を引き起こすものはありません。または、漏出検出器によって報告された偽陽性。 – CoryKramer
はい、私たちはボーランドXE7を持っており、新しいプロジェクトは新しい環境で開発されています。しかし、既存のプロジェクトでメモリリークを調べる必要があります。私たちはまだそのサイズのためにXE7に移行していません。 FastMMは非常に便利ですが、STLはコードの多くの場所で使用されているため、私を非常に混乱させる漏れを指摘しています。 – bboydushko