Tag: memory layout

具有相同成员类型的C结构是否保证在内存中具有相同的布局?

基本上,如果我有 typedef struct { int x; int y; } A; typedef struct { int h; int k; } B; 我有A a ,C标准是否保证((B*)&a)->k与ay相同?

C中的结构内存布局

我有一个C#背景。 我非常喜欢像C这样的低级语言。 在C#中, struct的内存由编译器默认布局。 编译器可以隐式地重新排序数据字段或填充字段之间的附加位。 因此,我必须指定一些特殊属性来覆盖此行为以获得精确布局。 AFAIK,C默认情况下不重新排序或对齐struct的内存布局。 但是,我听说有一个很难找到的例外。 什么是C的内存布局行为? 什么应该重新排序/对齐而不是?