解放後のアドレスの使用

割り当て解除されたストレージへのポインターが使用されています。

この診断は、ポイント先のストレージの割り当てが解除された後でポインター値が使用されるさまざまな方法が対象です。割り当て解除されたポインターの逆参照に関するエラーは、別の診断としてレポートされます。この診断は、関数の戻り値として割り当て解除されたストレージのアドレスが返されるなど、その他の使用方法が対象です。

ID

問題箇所

説明

1

不正なメモリーアクセス

不正なアドレスが使用された場所

2

解放サイト

アドレスの割り当てが解除された場所


#include <iostream>
using namespace std;
int glob;

int *UseDeallocatedStorage()
{
    int *p = new int[10];
    delete [] p; // p is now a stale pointer

    if (p != 0) // used in compare
        cout << "p == 0: " << p << endl; // used in print
        glob = (int) p; // used in type conversion to integer
    }
    return (p); // used as function return
}
 
int main(int argc, char **argv) 
{
    (void)UseDeallocatedStorage();
    return 0;
}
        

© 2010 Intel Corporation. 無断での引用、転載を禁じます。