回 帖 发 新 帖 刷新版面

主题:[讨论]VC中结构体内存大小 sizeof(struct2)

struct struct2
{
 int s1;
 char ch1;
 short int s2;
 char ch2;
};
main()
{
printf("the size of the strcu=%d\n", sizeof(struct2));
return(1);
}
哪位大哥帮帮,在VC中这个程序运行结果为什么是12,而不是8。而结构体改成这样s
truct struct2
{
 int s1;
 short int s2;
 char ch1;
 char ch2;
};
得出的结果则是8。本来按4字节为单位分配内存应该两种都是8呀。

回复列表 (共1个回复)

沙发

这是由于为优化程序运行速度,编译器字节对齐产生的。不同的编译器处理有时不一样。

你这样定义
struct struct2
{
    char ch1;    
    char ch2;
    short int s2;
    int s1;
};

那么sizeof(struct2)就是8

或者强制编译器按一字节对齐:

#pragma pack(push, 1)
struct struct2
{
    int s1;
    char ch1;    
    short int s2;
    char ch2;
};
#pragma pack(pop)

我来回复

您尚未登录,请登录后再回复。点此登录或注册