¿Cómo sabe free() el tamaño de la memoria que se va a desasignar?

Considere el siguiente prototipo de función free() que se usa para liberar memoria asignada usando malloc() o calloc() o realloc() .

void free(void *ptr);

Tenga en cuenta que la función gratuita no acepta el tamaño como parámetro. ¿Cómo sabe la función free() cuánta memoria liberar con solo un puntero?

La siguiente es la forma más común de almacenar el tamaño de la memoria para que free() conozca el tamaño de la memoria que se va a desasignar.
Cuando se realiza la asignación de memoria, el espacio de almacenamiento dinámico real asignado es una palabra mayor que la memoria solicitada. La palabra extra se usa para almacenar el tamaño de la asignación y luego es usada por free()

Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Referencias:
http://www.cs.cmu.edu/afs/cs/academic/class/15213-f10/www/lectures/17-allocation-basic.pptx
http://en.wikipedia.org/wiki/Malloc

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *