sizeof y alineación en C
sizeof mide almacenamiento, y un struct suele ser más grande que la suma de sus campos.
#include <stddef.h>
#include <stdio.h>
struct Padded {
char flag;
int count;
char label;
};
void layout(void) {
printf("char %zu int %zu double %zu\n",
sizeof(char), sizeof(int), sizeof(double));
printf("struct %zu, fields %zu\n",
sizeof(struct Padded), sizeof(char) * 2 + sizeof(int));
printf("offsets %zu %zu %zu\n",
offsetof(struct Padded, flag),
offsetof(struct Padded, count),
offsetof(struct Padded, label));
printf("alignment %zu\n", _Alignof(struct Padded));
}
Cómo funciona
sizeofse evalúa al compilar y produce unsize_t.- El relleno alinea cada miembro a su propio requisito.
offsetofte muestra exactamente dónde quedan los huecos.
Palabras clave y builtins usados aquí
_Alignofchardoubleintsizeofstructvoid
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 470
- Tokens
- 122
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 81 segundos.
Paso 1 de 4 en Valores y almacenamiento; paso 27 de 35 en Fundamentos del lenguaje.