私は、メモリリークを検出するためのVisual Leak Detectorを使用しています、とのようなラインでメモリリークの多くの事例が発生している:std :: map operator []は基本的なデータ型でどのようにメモリリークを引き起こしますか?
class SomeClass
{
// ...
std::map<long,long> some_map;
void func(long a_long, long b_long)
{
some_map[a_long] = b_long; // here be a memory leak
}
}
どのようにこれがさえ可能ですか?ここにはポインタは存在せず、オブジェクトのインスタンス化もありません。
何か他の理由でプログラムがクラッシュするという副作用であるのはメモリリークでしょうか?プログラムがクラッシュまたは終了すると(1)マップが完全に破壊されませんか?
あなたとピーターの答えは組み合わされるべきです。 – Omnifarious
exit(1)コマンドはこのような異常終了を引き起こしますか? – Jonathan
@ Jonathan-仕様のセクション18.3.8によると、 "自動オブジェクトは' exit() 'を呼び出した結果破壊されません。そう、はい、 'exit'を呼び出すと、デストラクタが実行されなくなります。 – templatetypedef