¿Tu variable ocupa una sola “celda” de memoria? Si alguna vez escuchaste decir que “una variable es una dirección de memoria”, es probable que esa frase te haya ayudado al principio… pero también que, con el tiempo, te haya generado dudas. Porque en realidad, no todas las variables caben en una sola unidad direccionable.
Este concepto aparece más de lo que creemos: en entrevistas técnicas (especialmente cuando preguntan por punteros o alineación de memoria), en bugs silenciosos al manipular buffers, o incluso al optimizar el uso de memoria en estructuras de datos.
Si ejecutamos este código C podremos ver cómo un solo int ocupa cuatro bytes, y acceder a él como un puntero a char revela su representación interna:
int a = 0x12345678;
char *p = (char*)&a;
printf("%02x %02x %02x %02x\n", p[0], p[1], p[2], p[3]);
Este detalle aparentemente pequeño es la base para comprender punteros, estructuras, “endianness” y hasta cómo los lenguajes gestionan la memoria por debajo.
▶️ En este video de menos de 2 minutos, te explico de forma visual por qué una variable no siempre equivale a una única dirección, y cómo el tamaño del dato determina cuántos bytes consecutivos necesita en memoria. Por ejemplo, un entero de 4 bytes no vive en “una celda”, sino en cuatro contiguas —y eso tiene consecuencias reales.
Y después de verlo, intentá responder estas preguntas: Si una variable ocupa más de un byte… ¿dónde empieza realmente? ¿Y qué pasa si intentamos acceder solo a “la mitad” de un entero?