De acuerdo con la página de Wikipedia Segmentation fault, un error de bus puede deberse a un acceso de memoria no alineado. El artículo ofrece un ejemplo sobre cómo desencadenar un error de bus. En el ejemplo, tenemos que habilitar la verificación de alineación para ver el error de bus. ¿Qué sucede si desactivamos dicha verificación de alineación?¿El acceso a la memoria no alineada siempre causa errores de bus?
Parece que el programa funciona correctamente. Tengo un programa que accede a la memoria desalineada con frecuencia, y es utilizado por un buen número de personas, pero nadie me informa errores de bus u otros resultados extraños. Si deshabilitamos la verificación de alineación, ¿cuál es el efecto secundario de la memoria desalineada?
Plataformas: Estoy trabajando en x86/x86-64. También probé mi programa compilándolo con "gcc -arch ppc" en una Mac y funciona correctamente.
¿Cuál es la plataforma que se está trabajando ?? –
Pavel Minaev responde en gran medida a mi pregunta. Estoy trabajando en x86/x86_64. Intenté mi programa compilándolo con "gcc -arch ppc" en Mac y funciona correctamente. – user172818
Tenga en cuenta que el acceso de memoria no alineado (en realidad, solo asignación de puntero) es un comportamiento indefinido según el estándar C, por lo que un compilador compatible puede hacer * cualquier cosa * si lo hace (aunque no todos los compiladores se tomarán esa libertad). – sleske