在32位操作系统gcc编译器环境下,关于字符对齐
来源:互联网 发布:初学者视频剪辑软件 编辑:程序博客网 时间:2024/04/29 17:55
在32位操作系统gcc编译器环境下,下面程序的运行结果为
#include <iostream>using namespace std;class A {public: int b; char c; virtual void print() { cout << "this is father’s fuction! " << endl; }};class B: A {public: virtual void print() { cout << "this is children’s fuction! " << endl; }};int main(int argc, char * argv[]) { cout << sizeof(A) << "" << sizeof(B) << endl; return 0;}
答案:12 12
类的大小只与类的成员函数和虚函数指针大小有关。sizeof(A)的大小等于4(int)字节+4(char考虑对齐)字节+4(指向虚函数的指针)字节
sizeof(B)的大小等于 4字节(int)+4字节(char考虑对齐)+4字节(指向虚函数的指针)
为什么sizeof(B)不是加上了两个虚函数指针的大小呢?为什么不是16?
因为在基类中存在虚函数时,派生类会继承基类的虚函数。在派生类中多定义了一个基类中没有的虚函数。派生类不会再增加字节(所有的虚函数共享一块存储空间一个虚函数表)仅仅需要考虑派生类中加进来的非static数据成员的内存空间大小即可。所以B的大小也为12。
0 0
- 在32位操作系统gcc编译器环境下,关于字符对齐
- 在64位系统以及64位编译器下字节对齐----阿里巴巴2015实习生笔试题
- Linux环境下GNU, GCC, G++编译器
- Linux环境下GNU, GCC, G++编译器
- 关于linux环境下GCC与g++编译器高低版本转换的问题
- 关于32位机器下的字节对齐
- Windows 32位程序在64位操作系统下运行
- 在Windows下使用gcc编译器
- 在windows下使用GCC编译器
- 在Windows下使用gcc编译器
- 在Windows下使用gcc编译器
- 在Windows下安装gcc编译器
- 在linux下查看内核版本、gcc版本、操作系统多少位等参数
- 在linux下查看内核版本、gcc版本、操作系统多少位等参数
- 关于在ubuntu64下安装arm-linux-gcc编译器的问题
- 在Windows操作系统下的gcc
- 在Windows操作系统下的gcc【转】
- 在Windows操作系统下的gcc
- redis常用命令、常见错误、配置技巧等分享
- 谱聚类
- c++ STL的list用法总结
- request中的遍历,Cookie ,Session,Application--4.21号学习总结
- java
- 在32位操作系统gcc编译器环境下,关于字符对齐
- C++远航之封装篇——对象指针、this指针
- UVALive
- Ros平台下:从零开始学习SLAM(序)
- 探索推荐引擎内部的秘密系列
- maven学习-壹
- 可变参数列表源码的剖析
- (转)资产管理和财富管理的区别
- bzoj2738: 矩阵乘法