無効なポインターが逆参照されています。
この診断は、いくつかの種類の無効なポインター値の逆参照に対して出力されます。有効なオブジェクトに基づいていないポインター値は無効とみなされます。このような値は、ローカル変数のアドレスを取得し、そのアドレスを存続期間が終了してから使用したり、あるいは非ゼロ整数からポインター型への型キャストを行うことにより発生します。この診断はまた、ポインター値が有効なオブジェクトのアドレスに基づいているものの、、ポインターの計算値がオブジェクトの境界外 (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. 無断での引用、転載を禁じます。