C/C++数据对齐汇总
- 若len < size,则以len为单位对齐
- 若len >= size,则以size为单位对齐
struct B{
|
struct A{
|
cout<<sizeof(B)<<endl; |
| 输出结果: 12 8 |
理解起来也不难,普通情况下。地址总线总是依照对齐后的地址来訪问。比如你想得到0x0000 0001開始的4字节内容,系统首先要以0x0000 0000開始,获得一个4字节,然后从中去除三字节。接着又以0x0000 0004開始,取出一个四字节,然后 取出一字节,两次组合你想得到的内容,然而假设初始地址一開始就是0x0000
0000那么就仅仅要一次即可了。所以对于B来说,按四字节对齐如果i的地址是0x0000 0000 那么为了一次取出j那么j的地址必须为0x0000 0004,因为四字节对齐k也要占四字节。而A中如果j的地址是0x0000 0000,那么i为0x0000 0004非常合理,且当k地址为0x0000 0002时相同能够一次取出,所以一共8字节。
struct C{
|
结果:4 解释:由于静态变量是存放在全局区,而sizeof计算栈中分配的大小,是不会计算在内的,全部结果为4. |
版权声明:本文博客原创文章,博客,未经同意,不得转载。
C/C++数据对齐汇总的更多相关文章
- C++中数据对齐
大体看了看数据对齐,不知道是否正确,总结如下: struct A { char name; double dHeight; int age; }; sizeof(A) = (1+7+8+4+4) = ...
- AspxGridView 数据的汇总统计
AspxGridView底部增加数据汇总行 这个功能在AspxGridView中不用复杂的代码实现, 实际上只是设置下GridView的属性而已 1. ShowFooter设置为True,即显示. 位 ...
- gpu显存(全局内存)在使用时数据对齐的问题
全局存储器,即普通的显存,整个网格中的随意线程都能读写全局存储器的任何位置. 存取延时为400-600 clock cycles 很easy成为性能瓶颈. 訪问显存时,读取和存储必须对齐,宽度为4B ...
- 结构体的数据对齐 #pragma浅谈
之前若是有人拿个结构体或者联合体问我这个结构占用了多少字节的内存,我一定觉得这个人有点low, 直到某某公司的一个实习招聘模拟题的出现,让我不得不重新审视这个问题, 该问题大致如下: typedef ...
- sizeof数据对齐问题
#include <iostream> using namespace std; struct A1 { int a; static int b; }; struct A2 { int a ...
- CSAPP阅读笔记-struct, union, 数据对齐-来自第三章3.9的笔记-P183-P191
1.数据对齐 为什么要对齐:通俗点解释就是CPU对数据访问时,每次都是取固定数量的字节数,假如一次取4个字节,若有个int存在0x01-0x04,则一次就能取出,若存在0x03-0x06,则需要分两次 ...
- 数据对齐 posix_memalign 函数详解
对齐 数 据的对齐(alignment)是指数据的地址和由硬件条件决定的内存块大小之间的关系.一个变量的地址是它大小的倍数的时候,这就叫做自然对齐 (naturally aligned).例如,对于一 ...
- C++中数据对齐问题。struct、union、enum,类继承。再谈sizeof()
首先是struct,在C++中,结构体其实和class有很大的相似了.但是有一点不同的是,struct默认是public,而class中是private. 当然,struct继承等用法也是可以的. 共 ...
- data structure alignment(数据对齐)
概述: 数据对齐指数据在计算机内存中排放和获取的方式.包含三个方面:数据对齐(data alignment).数据结构填充(data alignment).打包(packing) 如果数据是自然对齐的 ...
随机推荐
- Android的内存优化
腾讯公司在五月三十一日开展[腾讯Bugly移动开发人员沙龙]大会.大会上面叶方正老师解说了 关于Android的内存优化的问题,只是我感觉叶老师许多其它的站在了測试的角度上去解释了这一方面,叶老师给我 ...
- delphi 发送消息控制滚动条
1.Perform 函数 DBGrid1.Perform(WM_VSCROLL,SB_PAGEDOWN,0); //控制滚动条,向后翻页 DBGrid1.Perform(WM_VSCROLL,SB_ ...
- 【译】ASP.NET MVC 5 教程 - 10:添加验证
原文:[译]ASP.NET MVC 5 教程 - 10:添加验证 在本节中,我们将为Movie模型添加验证逻辑,并确认验证规则在用户试图使用程序创建和编辑电影时有效. DRY 原则 ASP.NET M ...
- 从头来之【图解针对虚拟机iOS开发环境搭建】 (转)
1.下载Mac OSX10.9. 点击下载 2.下载VMware Workstation 10,点击下载,网页中包含序列号.安装VM. 3.VM10-MacOS补丁.用于创建苹果虚拟机. 安装VM就不 ...
- Android FragmentStatePageAdapter的使用Demo
上一篇写过FragmentPagerAdapter,这篇来介绍FragmentStatePagerAdapter,那么两者之间有何差别呢: FragmentPagerAdapter很多其它的用于少量界 ...
- Android至ViewPager添加切换动画——使用属性动画
转载请注明出处:http://blog.csdn.net/allen315410/article/details/44200623 ViewPager作为Android最经常使用的的组件之中的一个.相 ...
- 理解Git的工作流程(转)
英文原文:Understanding the Git Workflow 如果你不理解Git的设计动机,那你就会处处碰壁.知道足够多的命令和参数后,你就会强行让Git按你想的来工作,而不是按Git自己的 ...
- tarjan+缩点
B - Popular Cows Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Su ...
- 分解XML方法
分解XML方法 1.DOM生成和解析XML 2.SAX生成和解析XML 3.DOM4J生成和解析XML 4.JDOM生成和解析XML 版权声明:本文博主原创文章.博客,未经同意不得转载.
- 2014华为机试西安地区B组试题
2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.開始,电灯所有关着. 有n ...