無効なポインター

無効なポインターが逆参照されています。

この診断は、いくつかの種類の無効なポインター値の逆参照に対して出力されます。有効なオブジェクトに基づいていないポインター値は無効とみなされます。このような値は、ローカル変数のアドレスを取得し、そのアドレスを存続期間が終了してから使用したり、あるいは非ゼロ整数からポインター型への型キャストを行うことにより発生します。この診断はまた、ポインター値が有効なオブジェクトのアドレスに基づいているものの、、ポインターの計算値がオブジェクトの境界外 (p = &x - 1; *p = 1;) である場合にも使用されます。このようなエラーは、境界違反としてレポートされることもあります。

ID

問題箇所

説明

1

不正な逆参照

不正なポインター値が使用された場所

2

メモリー書き込み

ポインター値が作成された場所


#include <stdio.h>

int *p;

void f()
{
    int x = 1;
    // uses invalid value assigned to p in main
    printf("contents of address 100 is equal to %d\n", *p);
    p = &x;
}

int main(int argc, char **argv)
{
    p = (int *)100;
    f();
    // uses invalid value assigned to p in f
    printf("local variable x is equal to %d after call returns\n", *p);
}
        

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