我知道将动态分配的数组的长度传递给操作它们的函数是一种常见的约定:
void initializeAndFree(int* anArray, size_t length);
int main(){
size_t arrayLength = 0;
scanf("%d", &arrayLength);
int* myArray = (int*)malloc(sizeof(int)*arrayLength);
initializeAndFree(myArray, arrayLength);
}
void initializeAndFree(int* anArray, size_t length){
int i = 0;
for (i = 0; i < length; i++) {
anArray[i] = 0;
}
free(anArray);
}
但是,如果我无法从指针中获取分配内存的长度,那么free()
当我给它的所有指针都是相同的指针时,“自动”如何知道要释放什么?作为 C 程序员,为什么我不能参与其中?
从哪里free()
获得它的免费(har-har)知识?