memoria de computadora está generalmente alineado con un límite igual en tamaño al sistema de tamaño de palabra . En un sistema de 32 bits hipotética , imagina que este tamaño de palabra es de cuatro bytes de longitud. En el lenguaje C , se pueden crear estructuras que almacenan datos . Con el fin de alinearlos con el tamaño de la palabra , el compilador de C puede agregar relleno a la estructura. Puede eliminar este relleno mediante una directiva de preprocesador que le indica que debe alinear los datos de manera diferente . Cosas que necesitará
C Entorno de desarrollo integrado , como Eclipse CDT
C Compiler , tal GCC
Mostrar más instrucciones
1
Cargue el IDE de C al hacer clic en el icono del programa . Cuando se abre, seleccione " Archivo /Nuevo /Proyecto " y selecciona "Proyecto C " para crear un nuevo proyecto C . Un archivo de código fuente en blanco en la parte de edición de texto de la IDE.
2
Crear un " struct " llamado "A" con la alineación predeterminada de la memoria . Escriba la siguiente instrucción al principio del archivo de código fuente:
struct { } A;
3
Añada algunos miembros de datos a la estructura "A" Al mezclar enteros y tipos de caracteres , que se aseguran de que el compilador rellena la estructura. En un sistema de 32 bits , los dos primeros tipos de datos int cada ocupan cuatro bytes de memoria y están perfectamente alineados como se muestran . Sin embargo , los dos tipos de datos char cada ocupan un solo byte , y juntos ocupan dos bytes de datos . El compilador pad esto con dos bytes de datos de la chatarra para alinear los datos correctamente. Agregue las siguientes instrucciones a struct "A" por su inclusión entre los corchetes después de la palabra
int a " struct ". ;
Int b;
char a ;
caracteres b;
4
Crear una directiva de preprocesador que le indica que debe alinear con el límite de 1 byte , no el límite de 4 bytes :
# pragma paquete (push , 1 )
5
Crear otra estructura, éste llamado "B ", y lo coloca inmediatamente después de la directiva de preprocesador escrito en el paso anterior.
struct { } B;
6
Rellene struct "B " con los mismos tipos de datos como estructura "A ", al escribir las siguientes declaraciones dentro de los corchetes de la estructura " B. " Estos tipos de datos se alinearán al byte más próximo, que pasa a ser 10 ( cuatro para cada int , uno para cada char) . No habrá relleno en esta estructura
int a; .
Int b;
char a ;
caracteres b;
< br > 7
Reiniciar la alineación de nuevo a su valor predeterminado por escrito la siguiente declaración :
# pragma pack (pop )