64位操作系统下类的sizeof计算
来源:互联网 发布:hadoop spark java 编辑:程序博客网 时间:2024/06/05 16:20
今天想温习下C++的东西,在fedora17下写了几个例程,运行结果令我大吃一惊
class C
{
public:
void f()
{
cout << "Hello world in C class" << endl;
}
private:
int a;
};
4 == sizeof(C)
class D
{
public:
virtual void vf1()
{
cout << "Hello world in D class vf1" << endl;
}
private:
int a;
};
16 == sizeof(D)
为什么更换一个虚函数后类的大小变成了16字节
继续做实验
class E
{
public:
virtual void vf1()
{
cout << "Hello world in E class vf1" << endl;
}
};
8 == sizeof(E)
看了以上结果,百思不得其解,后面想了下,是不是操作系统是64位,8字节的
运行uname -i
结果是x86_64
我和同事方俊讨论了下,根据现象可以判断,在64位系统下,如果类中有指针就会是8字节对齐
继续实验
在数据段加上一个数据指针
class C
{
public:
void f()
{
cout << "Hello world in C class" << endl;
}
private:
char c;
int *b;
};
16 == sizeof(C)
class A
{
void virtual va() = 0;
};
class B
{
void virtual vb() = 0;
};
class C : public A, public, B
{
void va()
{
cout<<"in va."<<endl;
}
void vb()
{
cout<<"in vb."<<endl;
}
};
int main(int argc, char *argv[])
{
C tmpC;
cout << sizeof(tmpC) << endl;
}
一个继承序函数就就增加一个虚表;
2×8=16
哈哈哈,今天的意外发现,还挺有意思的,在用baidu和google搜索了一下,还未发现同类文章,发表的网上,供大家参考,有问题可以发邮件来讨论15882206651@139.com
- 64位操作系统下类的sizeof计算
- sizeof--32位和64位操作系统的区别
- 32位和64位下的sizeof
- 32位和64位下的sizeof()
- 32位和64位下的sizeof
- C++ sizeof 64位和32位下的对比
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- sizeof 字节的对齐,位域sizeof的计算
- sizeof与lstrlen的差别 32位和64位下sizeof有什么不同
- 类的sizeof计算
- 类的sizeof计算
- 以下为Windows NT 下的32 位C++程序,请计算sizeof 的值
- 以下为WindowsNT下32位 C++程序,请计算sizeof的值
- 某32位系统下, C++程序,请计算sizeof 的值.
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- C/C++中sizeof()的用法——32位和64位下的sizeof()
- 64位系统下sizeof()小结
- (Codeforces Round #136 (Div. 2))A. Little Elephant and Function(递归分析,简单)
- 黑马程序员_java编程基础14 String
- PIC中数据存储格式及原理
- 对一个sed"N;P;D"多行模式处理语句的分析
- hdu2069Coin Change-母函数
- 64位操作系统下类的sizeof计算
- 基区宽度调制效应(厄尔利(Early)效应)
- UrlreWirte的使用
- Case Analyzer 配置之(设计Filed)
- 黑马程序员_java编程基础15 集合框架
- HTML5 Slideshow Maker-免费创建HTML5幻灯片相册软件
- dreamweaver建立网站
- AspxgridView cell 的格式设置
- 黑马程序员_java编程基础16 集合框架2