Bytes de holgura en estructuras: explicado con un ejemplo

Estructuras : 
las estructuras se utilizan para almacenar los datos que pertenecen a diferentes tipos de datos bajo el mismo nombre de variable. Un ejemplo de una estructura es como se muestra a continuación: 
 

struct STUDENT
{
    char[10] name;
    int id;
};

El espacio de memoria para la estructura anterior se asignaría como se muestra a continuación: 

Aquí vemos que no hay espacios vacíos entre los miembros de la estructura. Pero en algunos casos se producen espacios vacíos entre los miembros de la estructura y estos se conocen como bytes de holgura

¿Necesita bytes de holgura?  
En las computadoras y la tecnología la velocidad es un factor muy importante. Siempre tratamos de hacer diseños y algoritmos de tal manera que el acceso a la memoria sea mucho más rápido o la solución sea mucho más rápida de obtener. Los microprocesadores acceden a los datos que están presentes en las direcciones pares más rápido que a los datos que están presentes en las direcciones impares. Entonces, tratamos de asignar la memoria de los datos de tal manera que la dirección inicial de la variable particular esté en la dirección par. 

Los microprocesadores acceden a los datos almacenados en la dirección par más rápido que los datos almacenados en la dirección impar. Por lo tanto, se convierte en responsabilidad de los compiladores asignar la memoria para los miembros de modo que tengan direcciones uniformes para que se pueda acceder a los datos muy rápido. Esto lleva al concepto de bytes de holgura. 

SLACK BYTES: 
Los compiladores optimizados siempre asignarán direcciones pares a los miembros de la estructura para que se pueda acceder a los datos muy rápido. Las direcciones pares pueden ser múltiplos de 2, 4, 8 o 16. Esto introduce algunos bytes sin usar o huecos entre los límites de algunos miembros. Estos bytes no utilizados o huecos entre los límites de los miembros de la estructura se conocen como bytes de holgura

Los bytes de holgura no contienen información útil y en realidad son un desperdicio de espacio de memoria. Pero el acceso a los datos sería mucho más rápido en el caso del concepto de bytes de holgura. Cuando se utilizan los bytes de holgura, el tamaño de la estructura sería mayor o igual que la suma del tamaño de los miembros individuales de la estructura. Algunos compiladores optimizados asignan la dirección de modo que las direcciones de cada miembro sean múltiplos del tamaño del tipo de datos más grande de la estructura. 

Ejemplo: Considere la siguiente declaración de una estructura: 

struct EMPLOYEE
{
    char name[8];
    int id;
    double salary;
};

Aquí vemos que el tipo de datos doble ocupa el espacio de memoria más alto ( suponga que doble = 8 bytes ). Por lo tanto, a cada miembro se le asignaría una dirección de memoria que es un múltiplo de 8, como se muestra a continuación: 

Observe aquí que todos los miembros de la estructura comienzan con una dirección que es un múltiplo de 8. Y podemos observar un espacio vacío en el medio (región sombreada en rojo) que se conoce como los bytes de holgura.
 

Publicación traducida automáticamente

Artículo escrito por sunilkannur98 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *