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

Dan*_*Dan 6 c memory free pointers

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

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

  array += 5; // adjusting the indicies

  free(array);
}
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*ood 7

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


Dig*_*oss 5

没有

(并且"是",你需要"重新设定它".)

API要求您只传递给free()你的malloc()1.


1.或空指针.