MEMVISUALIZER/ C DEBUGGER
C / memoria simulada
C main.c C · simulador
Línea 1, Col. 1int 4 B · puntero 8 B
CONSOLASalida del programa
La salida de printf aparecerá aquí.
Memoria en vivo
0 variables · 0 bytes

Bytes de objetos simulados, incluido el relleno de structs.

PASO 01 / 01Preparado para ejecutar
Preparado

AYUDA / MEMVISUALIZER

«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.

  1. Ejecuta o avanza para observar cómo aparecen y cambian las variables.
  2. Pulsa un bloque para inspeccionar su dirección, valor y bytes. Los punteros muestran su destino.
  3. Prueba la recursión para ver cómo cada llamada crea su propio marco en la pila.

Cadenas en memoria

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.

Contadores de memoria

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.

Subconjunto de C

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.