在 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