C free()例程和递增的数组指针

时间:2011-03-24 03:51:17

标签: c memory pointers free

如果我动态分配一个数组然后传递,而不是初始指针,但是指向数组中间的指针,free()例程会工作吗?例如:

int* array = malloc(10 * sizeof *array);
if(array) {

  array += 5; // adjusting the indicies

  free(array);
}

或者在调用free()之前是否需要将指针设置回数组的开头?

2 个答案:

答案 0 :(得分:7)

绝对不是。传递给free()的值必须与malloc()返回的值完全相同。事实上,为了确保这种情况,如果你需要一个可以递增或修改的指针,我建议你使用指针的副本。

答案 1 :(得分:5)

(和“是”,你需要“重新设定”。)

API要求您只传递free()malloc() 1 完全相同的内容。


1。或者是一个空指针。功能