如果我动态分配一个数组然后传递,而不是初始指针,但是指向数组中间的指针,free()
例程会工作吗?例如:
int* array = malloc(10 * sizeof *array);
if(array) {
array += 5; // adjusting the indicies
free(array);
}
或者在调用free()
之前是否需要将指针设置回数组的开头?
答案 0 :(得分:7)
绝对不是。传递给free()
的值必须与malloc()
返回的值完全相同。事实上,为了确保这种情况,如果你需要一个可以递增或修改的指针,我建议你使用指针的副本。
答案 1 :(得分:5)
(和“是”,你需要“重新设定”。)
API要求您只传递free()
与malloc
() 1 完全相同的内容。
1。或者是一个空指针。功能