Métodos

42 (I): libft, construyendo la caja de herramientas

El primer proyecto de 42: reescribir funciones básicas de C sin librerías. Donde se aprende de verdad qué hace malloc.

42 (I): libft, construyendo la caja de herramientas

Lo primero que aprendes en 42 es que no hay nada preparado. Ni printf, ni strlen, ni ninguna librería: si lo necesitas, te lo escribes. Y la primera entrega del curso, libft, es justo eso: reescribir una buena parte de la librería estándar de C desde cero. Un aviso antes de empezar: por norma de la escuela no comparto código de los proyectos, así que en esta serie contaré el planteamiento, los problemas y lo que saqué de cada uno, nunca la solución.

El problema

Sobre el papel, volver a escribir funciones conocidas parece pesado pero sencillo. En la práctica, es el proyecto donde más fundamentos he aprendido de golpe. La lista pedida superaba la cincuentena de funciones: memoria (memset, memcpy, calloc…), cadenas, conversión de caracteres y, como parte opcional, listas enlazadas. Cada una con sus casos límite: cadenas vacías, bloques que no cuadran, tamaños que se pasan de lo pedido. Y por encima de todo, el verdadero tema de fondo: entender malloc de verdad, cuándo reserva, cuándo hay que liberar y qué pasa cuando se te olvida.

Cómo lo abordé

Me repartí el trabajo en tres bloques: primero las funciones de memoria y de cadenas más cortas, después las que construyen cosas nuevas (substr, split, strjoin, itoa), y al final el bonus con las listas enlazadas. Todo se compila en una librería estática con un Makefile, y eso también fue aprendizaje: reglas, dependencias y un fclean que lo deje todo limpio. Según avanzaba probaba cada función con un main de pruebas propio, porque una función que compila no es una función que funciona. El repositorio, 42_libft, quedó con el código en src/, la cabecera en include/ y el Makefile en la raíz, y después lo integré dentro del repositorio general del curso, 42_Cursus.

Qué me llevé

Dos cosas. La primera, que nunca más miraré strlen con los mismos ojos: detrás de cada función banal hay decisiones sobre memoria y tipos que ahora entiendo. La segunda, disciplina: la norma de la escuela obliga a un estilo estricto y a gestionar toda la memoria sin fugas, y al principio sangra, pero al cabo de un par de semanas ya lo haces sin pensar. libft no tiene nada de glamuroso: nadie verá esa librería fuera de clase. Pero es la caja de herramientas con la que he escrito todo lo que vino después, y se nota cada vez que un proyecto nuevo compila a la primera.