動的に割り当てられたメモリーが解放されませんでした。
動的に割り当てられたメモリーへの最後のポインターが解放されずに破棄された場合に、メモリーリークが検出されます。ポインター値は、その変数が上書きされたり、その宣言がサブルーチンやブロックの終了によってスコープ外になると破棄されます。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
メモリーリーク |
メモリーリークが発生した場所 |
2 |
割り当てサイト |
メモリーが割り当てられた場所 |
#include <stdlib> char *p1; void f() { char *p2; p1 = (char *)malloc(10); // allocated here p2 = p1; p1 = 0; // value in p1 is destroyed, but memory is not leaked yet, // because p2 still contains address and p2 could be freed *p2 = 'a'; // memory is leaked here because p2 is destroyed when f returns }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。