解放されたメモリーにアクセスしています。
これは深刻なエラーです。アクセスしたストレージは再利用されている可能性があります。そのため、予期できない値が読み取られたり、書き込みによって別の変数やヒープ全体の異常を引き起こすことがあります。これは、"古いポインター" エラーとも呼ばれ、ポインターが無効または古くなった後に使用されたことを示します。
ID |
問題箇所 |
説明 |
---|---|---|
1 |
不正なメモリーアクセス |
メモリーがアクセスされた場所 |
#include <stdio.h> int main(int argc, char **argv) { int *p, *q; p = (int *)malloc(4); *p = 1; free(p); q = (int *)malloc(4); *q = 2; *p = 3; // error here: can't use p after it was freed printf("*q = %d\n", *q); // Will this print "q = 2" or "q = 3"? }
© 2010 Intel Corporation. 無断での引用、転載を禁じます。