Se free () sabe o tamanho da minha matriz, por que não posso solicitá-la no meu próprio código?
Eu sei que é uma convenção comum passar o comprimento de matrizes alocadas dinamicamente para funções que as manipulam:
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);
}
mas se não há como obter o comprimento da memória alocada de um ponteiro, comofree()
"automagicamente" sabe o que desalocar quando tudo o que estou dando é o mesmo ponteiro? Por que não consigo entrar na mágica como programador em C?
Ondefree()
obter seu conhecimento gratuito (har-har)?