C で、次の例をコーディングしたときにエラーが発生しました。
int *pointer;
int i = 0;
pointer = malloc(10 * sizeof(int));
pointer[i - 1] = 4;
は明らかi
に への負のインデックスpointer
です。
間違ったピースメモリが変更されたとしても、free(pointer)
[コードの後半] でのみエラーがトリガーされるのはなぜですか? エラー: double free or corruption (out)
。
編集:使用されたコンパイラはgcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3