Lo que malloc realmente hace bajo el capó
What is malloc doing, anyway?
malloc ofrece una interfaz sencilla, pero detrás hay mucho más: glibc pide memoria al kernel mediante brk y luego la reparte en fragmentos con cabeceras de tamaño. El artículo construye paso a paso un asignador propio con sbrk, listas de bloques libres, división y fusión de fragmentos, y explica la paginación bajo demanda: la memoria virtual solo ocupa RAM cuando se escribe en ella. También muestra cómo devolver memoria al kernel bajando el break.
Cada proceso ve memoria virtual, que el kernel mapea sobre la RAM física en páginas de 4 KiB. Esa separación permite al kernel entregar rangos de direcciones sin RAM física detrás: una página virtual solo necesita respaldo físico en su primera escritura.
- assumed_throwaw
Aunque sea tangencial, la complejidad y la sobrecarga de la abstracción de malloc son precisamente lo que me intrigó mucho de los lenguajes "solo pila", como el recién publicado Goose. Hay algo muy elegante y emocionante en la idea de deshacerse de ella (casi) por completo. Así como los lenguajes de programación modernos han desarrollado una buena ergonomía que reemplaza a un recolector de basura, ojalá se pueda hacer lo mismo para reemplazar la memoria asignada en el heap.
- K0IN
Cuando me metí en wasm cuando era nuevo y tenía soporte de clang, escribí mi propia libc y malloc, lo que fue un gran aprendizaje de todas estas funciones de bajo nivel y trucos (listas libres, por ejemplo); también me gusta que puedo leer wasm bastante bien, y las herramientas son buenas para simplemente devolver un .wat y leerlo.
- projectileboy
Buen recurso de aprendizaje para este tema (y otros relacionados): https://cs61.seas.harvard.edu/site/2026/
- bajard
Malloc() es lentíiiisimo. Aún más si además usas free(). Considera asignar un único array y trabajar ahí si es posible.
- wpmaven
Encontré este muy bien explicado hace tiempo, para quienes busquen más detalles: https://sploitfun.wordpress.com/2015/02/10/understanding-gli...