C/C++: C++位域和内存对齐问题
struct bitmap
{
unsigned a : ;
unsigned b : ;
unsigned c : ;
}bit;
struct bitmap
{
unsigned a:;
unsigned :; /*空域*/
unsigned b:; /*从下一单元开始存放*/
unsigned c:;
}
sizeof(bitmap) == ;
struct bitmap
{
unsigned a:;
unsigned :;
unsigned b:;
unsigned c:;
};
sizeof(bitmap) == ;
struct bitmap
{
unsigned a : ;
unsigned b : ;
unsigned c : ;
};
sizeof(bitmap) == ;
class Demo
{
unsigned mode : ;
unsigned modeifed : ;
unsigned protA : ;
unsigned protB : ;
public:
...
};
struct X
{
char a;
float b;
int c;
double d;
unsigned e;
};
sizeof(X) == ;
struct X
{
char a; // 1 bytes
char padding1[]; // 3 bytes
float b; // 4 bytes
int c; // 4 bytes
char padding2[]; // 4 bytes
double d; // 8 bytes
unsigned e; // 4 bytes
char padding3[]; // 4 bytes
};
sizeof(X) == ;
struct bitmap
{
unsigned a : ;
int b;
unsigned c : ;
};
sizeof(bitmap) == ;
struct bitmap
{
unsigned a;
double c;
};
sizeof(bitmap) == ;
#pragma pack(4)
struct bitmap
{
unsigned a;
double c;
};
sizeof(bitmap) == ;
struct bitmap
{
double c;
int k;
int m;
};
sizeof(bitmap) == !=
struct bitmap
{
double c;
int k;
};
sizeof(bitmap) ==
class Test
{
public:
virtual void Hi(); int c;
double d;
};
sizeof(Test) == (IA32)或者 (x86-)
class Test
{
};
sizeof(Test) == ;
class A
{
double c;
public:
class B
{
int i;
double c;
}b;
int d;
};
sizeof(A) == sizeof(A::B) ==
7. C++的类静态成员不会被sizeof计算,这个要注意:
class C
{
public:
static char b;
static int *c;
};
sizeof(C)的结果是1
C/C++: C++位域和内存对齐问题的更多相关文章
- C++位域和内存对齐问题
1. 位域: 1. 在C中,位域可以写成这样(注:位域的数据类型一律用无符号的,纪律性). struct bitmap { unsigned a : ; unsigned b : ; unsigned ...
- C语言 结构体的内存对齐问题与位域
http://blog.csdn.net/xing_hao/article/details/6678048 一.内存对齐 许多计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的首地 ...
- 解析C语言结构体对齐(内存对齐问题)
C语言结构体对齐也是老生常谈的话题了.基本上是面试题的必考题.内容虽然很基础,但一不小心就会弄错.写出一个struct,然后sizeof,你会不会经常对结果感到奇怪?sizeof的结果往往都比你声明的 ...
- struct内存对齐1:gcc与VC的差别
struct内存对齐:gcc与VC的差别 内存对齐是编译器为了便于CPU快速访问而采用的一项技术,对于不同的编译器有不同的处理方法. Win32平台下的微软VC编译器在默认情况下采用如下的对齐规则: ...
- 内存对齐-C语言struct内存占用问题
转1个写的比较全面的. http://hubingforever.blog.163.com/blog/static/17104057920122256134681/ 本文编辑整理自:http://hi ...
- C/C++中的内存对齐 C/C++中的内存对齐
一.什么是内存对齐.为什么需要内存对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址 ...
- C语言内存对齐(2)
前两天参加了360测试实习生的笔试,碰到了一个有关c语言内存对齐的题目,回来后实现了一下,下面是代码: #include <stdio.h> #include <stdlib.h&g ...
- C++内存对齐总结
大家都知道,C++空类的内存大小为1字节,为了保证其对象拥有彼此独立的内存地址.非空类的大小与类中非静态成员变量和虚函数表的多少有关. 而值得注意的是,类中非静态成员变量的大小与编译器内存对齐的设置有 ...
- C/C++ 知识点1:内存对齐
预备知识:基本类型占用字节 在32位操作系统和64位操作系统上,基本数据类型分别占多少字节呢? 32位操作系统: char : 1 int :4 short : 2 unsigned ...
随机推荐
- php代码基础
如何接入新浪api <?php function getWeiboData() { $count = 15; // 参数source后面输入你的授权号 $url = "https:// ...
- 逻辑回归 Logistic Regression
逻辑回归(Logistic Regression)是广义线性回归的一种.逻辑回归是用来做分类任务的常用算法.分类任务的目标是找一个函数,把观测值匹配到相关的类和标签上.比如一个人有没有病,又因为噪声的 ...
- 漫谈C++:良好的编程习惯与编程要点
以良好的方式编写C++ class 假设现在我们要实现一个复数类complex,在类的实现过程中探索良好的编程习惯. ① Header(头文件)中的防卫式声明 complex.h: # ifndef ...
- GStreamer 记录
GStreamer 是一个新的多媒体框架,大大简化了多媒体工具的开发流程,比如,这里有一个 IBM 的文档,介绍了一个 MP3 播放器. http://www.ibm.com/developerwor ...
- kubernetes&tensorflow
谷歌内部--Borg Google Brain跑在数十万台机器上 谷歌电商商品分类深度学习模型跑在1000+台机器上 谷歌外部--Kubernetes(https://github.com/kuber ...
- CSS样式基础总结
首行缩进:text-indent:2em 行高:line-height:1.5em 1.5倍行距 也可以设置像素文字修饰:text-decoration:underline下划线 line-throu ...
- HTML5学习总结-番外05 移动终端适配
一 viewport 在使用移动端设备浏览网页时,移动端浏览器是直接把整个页面放到一个虚拟的视图里来显示的,通常来说这个虚拟的视图大小会比手机屏幕大,用户可以通过手势操作来平移.缩放这个视图. 如果不 ...
- DirectX runtime
DirectX 9.0 runtime etc https://www.microsoft.com/en-us/download/details.aspx?id=7087 DirectX 11 run ...
- SB中设置UITextField 无边框,真机上输入汉字聚焦时,文字 下沉
解决方案:sb中一定要设置有边框,然后在代码里设置成无边框 然后正常了. 参考:https://segmentfault.com/q/1010000007244564/a-10200000073481 ...
- [Java] Maven 建立 Spring MVC 工程
GIT: https://github.com/yangyxd/Maven.SpringMVC.Web 1. 建立 WebApp 工程 下一步: 下一步: 选择 maven-archetype-web ...