Tengo experiencia en C #. Soy muy novato en un lenguaje de bajo nivel como C.
En C #, struct
el compilador distribuye la memoria de forma predeterminada. El compilador puede reordenar los campos de datos o rellenar bits adicionales entre campos de forma implícita. Entonces, tuve que especificar algún atributo especial para anular este comportamiento para un diseño exacto.
AFAIK, C no reordena ni alinea el diseño de la memoria de a struct
de forma predeterminada. Sin embargo, escuché que hay una pequeña excepción que es muy difícil de encontrar.
¿Cuál es el comportamiento del diseño de memoria de C? ¿Qué se debe reordenar / alinear y no?
#pragma pack
pero con un control más detallado sobre la semántica.