メモリーリーク

動的に割り当てられたメモリーが解放されませんでした。

動的に割り当てられたメモリーへの最後のポインターが解放されずに破棄された場合に、メモリーリークが検出されます。ポインター値は、その変数が上書きされたり、その宣言がサブルーチンやブロックの終了によってスコープ外になると破棄されます。

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. 無断での引用、転載を禁じます。