La salida de printf aparecerá aquí.
Bytes de objetos simulados, incluido el relleno de structs.
«Nuevo código» abre un editor vacío. Escribe C o elige un ejemplo. Cada paso muestra la memoria después de la operación resaltada. Usa la barra de tiempo para volver a cualquier momento.
char *s = "hola" guarda un puntero de 8 bytes al primer carácter de un literal de solo lectura. char s[] = "hola" guarda 5 bytes en el propio array: h, o, l, a y el terminador \0. Al pasar el array a printf, se usa la dirección de su primer elemento. El formato %s lee hasta el primer byte cero. Los caracteres no ASCII se codifican en UTF-8 y pueden ocupar varios bytes.
char *s = "hola"
char s[] = "hola"
\0
%s
Los contadores suman los bytes de los objetos vivos en cada paso, incluidos los arrays, punteros y el relleno interno de structs. RODATA incluye los literales y las cadenas de formato de printf. No se incluyen instrucciones, direcciones de retorno, metadatos del asignador ni el consumo del navegador. Los espacios entre direcciones simuladas no representan bytes ocupados.
Admite char, short (2 B), int (4 B), long (8 B), punteros (8 B), structs con campos y arrays, funciones, recursión, if/else, while, for, printf, malloc y free. Los structs usan alineación natural y pueden contener otros structs o punteros; se accede a los campos con . y ->. Los argumentos struct por valor, typedef, floats, macros, casts y bibliotecas externas aún no están admitidos.
La traza se actualiza al editar. Se limita a 2.000 pasos y 60 llamadas para evitar ejecuciones infinitas. Los errores detienen la simulación y conservan los pasos anteriores.