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