Если free () знает длину моего массива, почему я не могу запросить его в своем собственном коде?
Я знаю, что принято передавать длину динамически распределенных массивов функциям, которые ими управляют:
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()
«автоматически» знаете, что делать, когда все, что я даю, это один и тот же указатель? Почему я не могу понять магию как программист на Си?
Где жеfree()
получить свои бесплатные (хар-хар) знания от?