Galera, é sabido que em C, para alocar memória dinamicamente utilizamos a função malloc();
Até aí tudo bem, sei como alocar e trabalhar com memória dinâmica.
Mas faço-lhes uma pergunta, como é que o malloc() sabe quando é para alocar um vetor ou uma variável comum?
Seguindo a lógica:
malloc(1) // aloca 1 byte de memória
malloc(4) // aloca 4 bytes de memória (equivalente a um INT).
malloc(8) // aloca 8 bytes de memória
Suponhamos que eu vá alocar memória para um vetor de inteiros, poderia fazer por ex:
int pInt;
pInt = (int) malloc(10sizeof(int)); // aloca memória para um vetor de inteiros de tamanho 10
Sabendo-se que um inteiro ocupa 4 bytes isso seria equivalente a fazer isso
pInt = (int) malloc(40);
Então, eu gostaria de saber como é que o malloc() sabe quando ele deve alocar um único bloco de tamanho X ou um conjunto de blocos para formar um vetor?