Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

332
Vistas
Comprender el tamaño de la estructura en el programa C

He definido en mi programa C una struct como se muestra a continuación:

 typedef struct { long time_of_arrival; // Number of minutes after the salon opening when the customer arrived char customer_name[21]; // Upto 20 characters long in all caps char stylist_name[21]; // Preferred stylist name, upto 20 characters long or NONE, in all caps long loyalty_points; // The loyalty points customer holds long requested_haircut_time; // The time corresponding to the haircut customer requested long loyalty_points_earned; // The loyalty points customer earned } customer;

Deseo crear una matriz de estructuras de tamaño según la cantidad de clientes proporcionada por el usuario a través del argumento de la línea de comando.

Para determinar la cantidad de memoria que ocuparía una sola instancia de dicha estructura en la memoria, ejecuté el siguiente fragmento de código:

 int main(int argc, char const *argv[]) { printf("%ld\n", sizeof(customer)); return 0; }

que imprimió el siguiente resultado:

 80

Sin embargo, en mi comprensión limitada, el tamaño debe ser de 74 bytes , es decir, 8 bytes para cada variable long y 21 x 2 bytes para las dos matrices de caracteres.

Luego de una depuración adicional (es decir, al crear una matriz independiente de 21 caracteres y verificar su tamaño con el operador sizeof , que se informó como 21 bytes ), llegué a la conclusión de que, por alguna razón, el tamaño de la matriz de caracteres debajo de la estructura se redondeaba a el múltiplo de 8 bytes.

Necesito ayuda para comprender qué fenómeno es responsable de este comportamiento y qué es lo que me falta aquí.

Nota: Estoy creando el programa C usando Apple clang versión 13.0.0 (clang-1300.0.29.3) que se ejecuta en macOS 12.0.1 (21A559) .

over 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda