hello.c
This commit is contained in:
+10
-2
@@ -4,8 +4,11 @@
|
||||
|
||||
- **Fase 2**: buffer dinámico. La Fase 1 está cerrada en Fedora, pero falta
|
||||
probarla en Windows.
|
||||
- Paso actual: 2.3b, `escpos_buffer_append` (varios bytes: puntero `const` +
|
||||
cantidad + `memcpy`). El 2.3a ya está hecho: `buffer_reserve`, `static`, `t` en `nm`.
|
||||
- Paso actual: 2.3b. `hello.c` ya usa bien `goto cleanup` (punteros a `NULL`
|
||||
uno por línea, `result`, un solo `return`), sin avisos con gcc ni clang, y
|
||||
Valgrind limpio. Falta `escpos_buffer_append`: el parámetro con la cantidad,
|
||||
`const`, reservar `len + cantidad`, `memcpy` y el comentario de la cabecera.
|
||||
Ahora copia 1 byte (`sizeof *byte`).
|
||||
- Entorno activo: Fedora 42 nativo (gcc 15.2, clang 20, make 4.4, gdb 17,
|
||||
valgrind 3.26).
|
||||
|
||||
@@ -36,6 +39,7 @@
|
||||
`$@ $< $^`, `.PHONY`.
|
||||
- Pila y montón, `malloc`/`free`/`realloc`, `NULL`, propiedad de punteros,
|
||||
tipo opaco, `typedef`, `->`, `uint8_t`/`size_t`, qué tipo usar.
|
||||
- Liberar en caminos de error sin `defer`: patrón `goto cleanup`.
|
||||
- Depuración: *segfault* (139), `free(): invalid pointer` (134), gdb básico,
|
||||
y leer errores e informes de fugas en Valgrind.
|
||||
|
||||
@@ -76,6 +80,10 @@
|
||||
cambiaba (`buffer->cap`) o que empezaba en 0, y eso daba bucles infinitos.
|
||||
Lo resolvió siguiendo los valores vuelta a vuelta. Seguir pidiéndole trazas
|
||||
a mano.
|
||||
- Declaraciones múltiples: escribió `escpos_buffer *a, *b, *c = NULL;` creyendo
|
||||
que las tres valían `NULL` (solo la última). Lo detectó clang con
|
||||
`-Wsometimes-uninitialized`. Ahora declara una variable por línea.
|
||||
- Variables locales sin inicializar: creía que valían `NULL` como en Go.
|
||||
- Impresoras físicas: sin registrar marca y modelo.
|
||||
- Confunde puntero colgante ("se pierde") con fuga. Tampoco tenía claro por qué
|
||||
el slice viejo es seguro en Go tras `append` (el GC no libera el array viejo,
|
||||
|
||||
Reference in New Issue
Block a user