32位操作系统和64位操作系统每种类型占用的字节数、内存对齐原则
32位操作系统:
1:整形
int 4字节
long int 4字节
short 2字节
unsigned int 4字节
unsigned long int 4字节
unsigned short 2字节
2:字符型
char 1字节
unsigned char 1字节
3:浮点型
float 4字节
double 8字节
long double 8字节
unsigned long double 8字节
unsigned double 4字节
4:字符串型
string 28字节
5:指针类型
所有类型的指针都是4字节
6:函数
除了void型,其他都函数占有的字节数等于函数的返回类型所占有的字节数,与函数体内部无关。
如:
double fun()
{ return 2.32;
}
sizeof(fun())=8
7:结构体、类
按照内存对齐原则:
- 结构体中元素是按照定义顺序一个一个放到内存中去的,但并不是紧密排列的。因此,元素存放位置一定会在自己宽度的整数倍上开始。(以结构体变量首地址为0计算)
- 按照原则1.分析后,检查计算出的存储的那元是否为所有元素中最宽的元素的长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
- 若结构体A中嵌套结构体B,则其存放位置在嵌套的结构体B中最宽元素的整数倍上开始。
- 若结构体A中嵌套结构体B,则检查计算出的存储单元是否为所有元素(包括嵌套结构体B中的最宽元素)长度的整数倍,是,则结束;若不是,则补齐为它的整数倍。
例子1:
struct B
{char a;int b;double c;};
struct A
{char a;B b;};
sizeof(B)=16;
计算A的存储长度时,在存放第二个元素b时的初始位置是在double型的长度8的整数倍处,而非16的整数倍处,即系统为b所分配的存储空间是第8~23个字节。
sizeof(A)=24;
例子2:
struct B
{char a;int b;double c;};
struct A
{B b;char a;};
sizeof(B)=16;
系统为b分配的存储位置是第0~15个字节,为a分配的是第16个字节,加起来一共17个字节,不是最长基本类型double所占宽度8的整数倍,因此要补齐到8的整数倍,即24。
sizeof(A)=24。
64位操作系统:
long类型和指针类型长度为8个字节,string类型是40个字节,其他类型与32位系统的字节数一样。
32位操作系统和64位操作系统每种类型占用的字节数、内存对齐原则相关推荐
- 32位系统和64位系统的区别是什么
随着生活的发展电脑也在飞速的更新换代,大家从最早的考虑使用什么版本系统到现在考虑的更多的是选择 32 位还是 64 位的 Windows 系统,大家都知道64位的系统工作能力比起32位系统来的更加优秀 ...
- 32位系统和64位系统的说明
关于32位系统和64位系统说明 我们常说的32位系统和64位系统,是怎么来的呢? 其实这跟cpu硬件是有关的: 32位的处理器,指的是cpu一次能处理的最大位数是32位,也就是如下: 1111 111 ...
- struct结构体在32位系统和64位系统的存储空间的不同
在64位操作系统上,如下数据结构占用的存储空间大小为多少字节: 1 2 3 4 5 6 struct A{ unsigned int a; char b[2]; double c; ...
- 32位系统和64位系统各种数据类型占用的空间(字节数)
不同的平台上对不同的数据类型分配的字节数是不同的,一般的,数据类型的字节数是由编辑器决定的(编译期间决定数据类型长度). 简单来说,平台就是CPU+OS+Compiler,cpu的位是指一次性可处理的 ...
- 32位系统和64位系统的选择
作为一名网络管理员,经常会给办公电脑安装系统,但是大部分企业的办公电脑配置一般不会很高.在选择系统的时候可能需要注意一些问题. 随着XP的淘汰,可能大家都会选择更新到win7,之前2GB内存会考虑增加 ...
- iOS上应用如何兼容32位系统和64位系统
在苹果推出iPhone5S时,64位的应用就走到了眼前.当时就看见苹果官方资料宣布iOS7.x的SDK支持了64位的应用,而且内置的应用都已经是64位. 我记得自己刚刚接触电脑时还有16位的系统,指针 ...
- 32位系统和64位系统变量所占空间总结
随着硬件的不断降价,我们的计算机内存也越来越大.而我们经常使用的Windows操作系统大 都是32位的,4G内存成为一个瓶颈问题.作为软件开发爱好者,如何在64位系统下做程序设计成为了日程中的话题.下 ...
- 32位系统和64位系统的区别
这个32位和64位主要说的是CPU一次处理数据的能力,32位就是32bit即一次可以处理4个字节的数据:64位就是64bit即一次可以处理8个字节 32位机器可以寻址2^32,64位机器可以寻址2^6 ...
- long类型在32位系统和64位系统的问题(android O )
程序在64位系统运行没有问题,但是在32位系统出现了下面的问题. JNI的代码如下: jmethodID service_setMostSiguuid = env->GetMethodID(se ...
最新文章
- 取消ssh密钥文件登录_Xshell密钥登入,增加安全
- 【ACM】杭电OJ 2037
- linux富文本软件,CherryTree For Linux
- 关于vue父子组件之间事件触发及数据传递问题
- REVERSE-PRACTICE-CTFSHOW-7
- iis7怎么安装php7,Linux下如何安装php7
- linux 安装 交换分区大小,给已安装的Linux新增Swap交换分区
- SpringBoot 整合 Shiro实践
- java 匿名类实现6_java匿名内部类,以及实现Comparato和Comparable接口实现对对象的排序...
- linux系统uptime解读,Linux中的uptime命令详解
- The RSpec Book笔记《四》Describing Code with RSpec用RSpec描述代码
- 阿里云域名解析ip地址变更后不起作用
- jQuery 实现页面关键字查询
- 关于丹佛机场行李系统分析
- 如何将ppt批量转换成pdf?
- Linux错误:warning: here-document at line 5 delimited by end-of-file (wanted `EOF`
- EXCEL中对1个单元格中多个数字求和
- python 存储图片_使用python存储网页上的图片实例
- J0ker的CISSP之路:复习-Access Control(4)
- 基于STM32的温度控制系统