# Apuntes Ordenados por tema, en el orden en que se ven en el proyecto. 1. [Compilación y enlazado](01-compilation-and-linking.md): etapas de gcc, cómo compila Go, empezar por cualquier etapa (`.i`, `-save-temps`), qué hay dentro de un `.i`, unidades de traducción, por qué basta la declaración para compilar, cabeceras e `#include`, encapsulación y tipos opacos, *include guards*, flags, qué ve quien recibe los binarios, `nm` y errores del enlazador. 2. [Punteros y cadenas](02-pointers-and-strings.md): cadenas terminadas en `'\0'`, `const char *`, los dos significados de `*`, dónde va el `*`, nombres de parámetros, paso por valor frente a puntero, un puntero no sabe cuántos elementos hay, `const` en parámetros, arrays y el formato de `printf`. 3. [La memoria de un proceso](03-process-memory.md): memoria virtual, fallos de página, modo usuario y modo núcleo, llamadas al sistema, cómo se lee la memoria de otro proceso, y por qué el peligro real está en la tuya. 4. [Go con mentalidad de C](04-go-with-c-mindset.md): benchmark de dos estilos, reservas de memoria, padding, slices que comparten memoria, dinero en float y el precio de la versión rápida. 5. [Frameworks y librerías](05-libraries-and-frameworks.md): Qt, por qué en C casi no hay frameworks, librerías C relevantes para el proyecto e interfaces con punteros a función. 6. [Make](06-make.md): reglas, grafo de dependencias por fechas, variables automáticas, reglas patrón, dependencias de cabeceras con `-MMD -MP` y detección de Windows/Linux. 7. [Memoria dinámica](07-dynamic-memory.md): pila y montón, *escape analysis* de Go, `malloc`/`free`/`calloc`, `sizeof *p`, `realloc` y estrategia de crecimiento, `memcpy` y desbordamiento al calcular tamaños, fugas, liberar en caminos de error sin `defer` (`goto cleanup`), propiedad de los punteros y Valgrind. 8. [Structs](08-structs.md): definir frente a declarar, tipos incompletos y tipo opaco, struct público frente a opaco, `typedef`, `uint8_t` y `size_t`, qué tipo usar en cada caso, `.` frente a `->` e inicializadores designados. 9. [Depurar](09-debugging.md): qué es un *segfault*, código de salida 139, `NULL` y la página 0, `free(): invalid pointer` (código 134), método para depurar con Valgrind, los comandos mínimos de gdb y la depuración visual en VS Code. [Chuleta de comandos](cheatsheet.md): todos los comandos usados, agrupados por tarea.