随着硬件的不断降价,我们的计算机内存也越来越大。而我们经常使用的Windows操作系统大
都是32位的,4G内存成为一个瓶颈问题。作为软件开发爱好者,如何在64位系统下做程序设计成为了日程中的话题。下面我根据程序在不同平台下的运行情
况,总结了一下C/C++常用数据类型所占的内存空间。
Win64, 也就是X64编译配置下:
char:1字节;
short:2字节;
int:4字节;
long:4字节;
long long:8字节;
float:4字节;
double:8字节;
long double:8字节;
wchar_t:2字节;
bool:1字节;
char*:8字节;
bool*:8字节;
short*:8字节;
int*:8字节;
long*:8字节;
long long*:8字节;
float*:8字节;
double*:8字节;
long double*:8字节;
wchar_t*:8字节;
下面是Win32, 也就是X86编译配置下变量所占字节数:
char:1字节;
short:2字节;
int:4字节;
long:4字节;
longlong:8字节;
float:4字节;
double:8字节;
long double:8字节;
wchar_t:2字节;
bool:1字节;
char*:4字节;
bool*:4字节;
short*:4字节;
int*:4字节;
long*:4字节;
long long*:4字节;
float*:4字节;
double*:4字节;
long double*:4字节;
wchar_t*:4字节;
总结:经上述比较,一般变量在X86和X64系统下长度没什么区别,区别在于指针的
寻址范围从32位增加到了64位。如果考虑对64位系统下程序的兼容性,指针是唯一需要注意的地方。从32位系统过渡到64位系统不同于从16位系统过渡
到32位系统,因为DOS系统下int只有2个字节,而Windows系统下int是4个字节,过渡到64位系统后int的字节数没有增加。如果使用
Windows系统编程,支持64位需要Visual Studio 2005/2008均可,而早期版本是不支持64位平台的。
---------------------------------------------------------------------------------------------------------------------------------------------
其实就是只有指针是8字节的,因为要检索64位地址,其他和32位上一模一样,从直觉上来说,过度应该会很平滑。只是,32位的程序无法检索超过32位的地址空间,而64位的可以--不知道这样的简单的理解是否可以。
分享到:
相关推荐
本实验的主要目的是熟悉Linux系统的基本概念,掌握Linux系统的安装和配置过程,初步掌握Linux系统的启动和退出方法,并熟悉Linux系统的文件系统结构。 Linux操作系统的安装 在安装Linux操作系统之前,需要下载并...
总结来说,ChartDirector for C++ 64位是一个强大的工具,为C++开发者提供了在64位环境中创建专业图表的能力,具有丰富的图表类型、交互式功能以及高效的数据处理能力,是数据可视化和分析的理想选择。通过学习和...
文章最后总结了Objective-C中实例所占内存的大小的知识点。主要结论是,Objective-C中对象在真正分配内存空间的时候至少是16个字节,包括NSObject和继承于NSObject的子类。 知识点: * Objective-C中实例所占内存...
总结来说,批量查询SQL Server数据库中表所占空间的关键在于创建一个触发器,这个触发器会在新表名插入辅助表时动态执行`sp_spaceused`。通过这种方法,可以有效地获取整个数据库中所有表的存储占用情况,从而便于...
此外,学生还需要在Linux环境下利用`malloc()`和`free()`系统调用来实现内存的动态分配和回收,确保能够正确地分配内存给变量、释放内存以及计算剩余未使用内存的大小。 实验原理部分介绍了虚拟存储系统的关键特性...
### 嵌入式系统与实时操作系统基础知识 #### 嵌入式系统概述 嵌入式系统是一种专用的计算机系统,通常集成在其他设备中,为特定的应用提供控制和服务功能。随着技术的进步和发展,嵌入式系统的应用越来越广泛,从...
15.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数 A1: 16位的系统下, int i = 65536; cout ; // 输出0; int i = 65535; cout ; // 输出-1; 32位的系统下, int i = 65536; cout ; ...
`sizeof(int)`返回4,表明在该环境下,一个整型变量占4字节。`sizeof(float)`也返回4,这表示浮点数在内存中占用4字节。同样地,`sizeof(int[128])`为512,因为数组包含128个整型元素,每个4字节。`sizeof(float[16]...
- 在系统变量中找到 `PATH` 变量并编辑,将 `C:\Program Files\Java\jdk1.6.0\bin` 添加到变量值的最前面。 这样做的目的是为了让系统能够找到 Java 编译器和其他必要的工具。 #### 4. Java 类的程序入口方法 每...
指针变量的 sizeof 值是指针本身所占的内存空间的大小,通常为 4 字节或 8 字节,取决于系统的位数。 数组的 sizeof 值 数组的 sizeof 值是数组所有元素的内存大小的总和。例如,int arr[10]; sizeof(arr) 的结果...
每个十六进制数字可以表示四位二进制数。 - **字的定义**:在计算机中,一个“字”是指处理器能够一次性处理的数据单位。 - **数据大小**:不同类型的变量占用不同的内存空间,例如整数类型通常占4个字节。 - **字节...
7. 当一个进程完成了特定的任务后,系统收回这个进程所占的资源和取消该进程的PCB,就撤消了该进程。 知识点:进程管理。 名词解释 1. 临界资源是指两个或多个进程竞争使用的资源,以避免资源的互斥访问。 知识...
这个大小通常取决于机器架构(如32位或64位系统)。例如,在32位系统上,大多数指针都占用4字节;而在64位系统上,它们通常占用8字节。 #### 2、指针的算术运算 指针支持算术运算,包括加法、减法等。对于指针而言...
实验成绩由预习报告、上机实验和实验报告三部分组成,分别占30%、35%和35%。预习报告需涵盖相关知识的书面总结和实验分析报告,实验报告则需详细记录上机结果、程序实现细节和实验心得。实验前应确保具备C语言编程...
在有操作系统支持的环境中,`main`函数由操作系统内核启动,内核负责初始化`main`函数所需的变量,并在调用结束后检查`main`函数的返回值来判断程序是否正常结束。 然而,在嵌入式系统中,由于缺乏操作系统内核的...
不同类型的指针占用的内存大小可能不同,但通常都是固定的,比如在大多数系统上,32位系统指针占4字节,64位系统占8字节。 对于复杂的类型,如`int *(*p(int))[3]`,可以按照运算符的优先级从左到右逐步解析。在这...
答案:sizeof 是运算符,计算数据所占内存空间;strlen 是函数,计算字符数组字符数;sizeof 可以用类型作参数;strlen 只能用 char* 作参数,必要是以’/0’结束。 13. 在 C++ 程序中调用被 C 编译器编译后的函数...
在不同的系统上,int的字节数可能不同,通常为32位或64位。 - 字符型(char):用于存储单个字符,如char c = 'A';。在C语言中,字符类型是基于ASCII码的,占用1字节。 - 浮点型(float、double):用于存储小数,...
* 指针类型占4字节(在32位操作系统中)。 四、隐式类型转换 * 在表达式'A' + false中,char类型和bool类型将被隐式转换为int类型,然后进行相加。 * 在表达式1 + 1.0中,int类型和double类型将被隐式转换为double...
指针所占的内存大小取决于编译器和操作系统,通常在32位系统上,指针的大小是4字节,在64位系统上,指针的大小是8字节。 理解了指针的这四个方面,我们就可以更深入地掌握指针的使用。例如,当我们声明一个指针数组...