2
int* foo = new int[10];
foo = NULL;
sleep(60);

Instrument は上記のコードでリークを検出しません。Instrument ツールを使用して C または C++ コードのリークを検出するにはどうすればよいですか。ほとんどの説明は客観的なCコードに基づいています...

4

1 に答える 1

3

問題は、コンパイラがnew次のコード フラグメントでの呼び出しを最適化することです。

int* foo = new int[10];
foo = NULL;
sleep(60);

それが使われていないことを知るのに十分賢いからです。使用するコードを追加するとfoo、コンパイラはこれを実行せず、予想されるリークが表示されるはずです。

int* foo = new int[10];

foo[3] = 23;
foo[8] = 45;

printf("%d %d\n", foo[3], foo[8]);

foo = NULL;
sleep(60);
于 2013-02-11T12:26:36.883 に答える