dissabte, 22 d’agost del 2020

Funcions stdlib [7/9]: calloc, malloc, realloc i free

 Gestió de memòries dinàmiques:



Funció calloc:     void *calloc(size_t nmemb,size_t tamany);


Adjudica espai para un array de nmemb objectes, cada qual te com a tamany tamany. 
El espai es inicialitzat a cero.

La funció calloc retorna o be un punter nul o be un punter al espai adjudicat.





Funció malloc:     void *malloc(size_t tamany);


Adjudica espai para un objecte, del qual el tamany es especificat per tamany del qual el valor es indeterminat.

La funció malloc retorna un punter nul o un punter al espai adjudicat.





Funció realloc:     void *realloc(void*ptr,size_t tamany);


Canvia el tampany del objecte apuntat per ptr al tamany especificat per tamany. 
Pot multiplicar, dividir, sumar i restar espais de memoria a una estructura.

El contingut del objecte no canviarà fins el menor dels tamanys nous i vells. Si el tamany nou es major, el valor de la porció novament adjudicada del objecte es indeterminat.

Si ptr es un punter nul, la funció realloc se comportarà a igual que la funció malloc para el tamany especificat. De lo contrari, si ptr no es igual a un punter prèviament retornat por la funció free, o realloc, el comportament no esta definit.

Si el espai no pot ser des adjudicat, el objecte apuntat per ptr no varia.

Si tamany es 0 i ptr no es un, el objecte al que apuntala es alliberat.

La funció realloc retorna o be un punter nul o be un punter possiblement al espai adjudicat mudat.



Funció free:     void free(void*ptr);


Causa el espai apuntat per ptr a ser des adjudicat, per lo que la memòria tornarà a ser disponible per a una altra adjudicació.

Si ptr es un punter nul, no es realitzarà cap acció. De lo contrari, si el argument no correspon a un punter prèviament retornat per la funció calloc, malloc o realloc, o si el espai ha sigut des adjudicat per una crida a fre o realloc, el comportament no serà definit.

La funció free no retorna ningun valor.



Més informació -> llibreria <stdlib.h>