`
isiqi
  • 浏览: 16744636 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

32位系统和64位系统变量所占空间总结

阅读更多

随着硬件的不断降价,我们的计算机内存也越来越大。而我们经常使用的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操作系统的安装 在安装Linux操作系统之前,需要下载并...

    chartdirector for C++ 64位。

    总结来说,ChartDirector for C++ 64位是一个强大的工具,为C++开发者提供了在64位环境中创建专业图表的能力,具有丰富的图表类型、交互式功能以及高效的数据处理能力,是数据可视化和分析的理想选择。通过学习和...

    Objective-C中关于实例所占内存的大小详解

    文章最后总结了Objective-C中实例所占内存的大小的知识点。主要结论是,Objective-C中对象在真正分配内存空间的时候至少是16个字节,包括NSObject和继承于NSObject的子类。 知识点: * Objective-C中实例所占内存...

    【SQL-Server】实现批量查询数据库表所占空间.pdf

    总结来说,批量查询SQL Server数据库中表所占空间的关键在于创建一个触发器,这个触发器会在新表名插入辅助表时动态执行`sp_spaceused`。通过这种方法,可以有效地获取整个数据库中所有表的存储占用情况,从而便于...

    操作系统实验-内存管理.doc

    此外,学生还需要在Linux环境下利用`malloc()`和`free()`系统调用来实现内存的动态分配和回收,确保能够正确地分配内存给变量、释放内存以及计算剩余未使用内存的大小。 实验原理部分介绍了虚拟存储系统的关键特性...

    嵌入式系统基础.pdf嵌入式系统基础.pdf

    ### 嵌入式系统与实时操作系统基础知识 #### 嵌入式系统概述 嵌入式系统是一种专用的计算机系统,通常集成在其他设备中,为特定的应用提供控制和服务功能。随着技术的进步和发展,嵌入式系统的应用越来越广泛,从...

    c++ 面试题 总结

    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]...

    java重要知识点总结

    - 在系统变量中找到 `PATH` 变量并编辑,将 `C:\Program Files\Java\jdk1.6.0\bin` 添加到变量值的最前面。 这样做的目的是为了让系统能够找到 Java 编译器和其他必要的工具。 #### 4. Java 类的程序入口方法 每...

    sizeof详细总结

    指针变量的 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语言编程...

    无系统的ARM 开发编程

    在有操作系统支持的环境中,`main`函数由操作系统内核启动,内核负责初始化`main`函数所需的变量,并在调用结束后检查`main`函数的返回值来判断程序是否正常结束。 然而,在嵌入式系统中,由于缺乏操作系统内核的...

    C_C++指针经验总结.pdf

    不同类型的指针占用的内存大小可能不同,但通常都是固定的,比如在大多数系统上,32位系统指针占4字节,64位系统占8字节。 对于复杂的类型,如`int *(*p(int))[3]`,可以按照运算符的优先级从左到右逐步解析。在这...

    2021年11月c和c++面试总结必考题.doc

    答案:sizeof 是运算符,计算数据所占内存空间;strlen 是函数,计算字符数组字符数;sizeof 可以用类型作参数;strlen 只能用 char* 作参数,必要是以’/0’结束。 13. 在 C++ 程序中调用被 C 编译器编译后的函数...

    C 语言知识点总结,带图文案例思维导图版1.1:数据类型

    在不同的系统上,int的字节数可能不同,通常为32位或64位。 - 字符型(char):用于存储单个字符,如char c = 'A';。在C语言中,字符类型是基于ASCII码的,占用1字节。 - 浮点型(float、double):用于存储小数,...

    C++面试题汇总

    * 指针类型占4字节(在32位操作系统中)。 四、隐式类型转换 * 在表达式'A' + false中,char类型和bool类型将被隐式转换为int类型,然后进行相加。 * 在表达式1 + 1.0中,int类型和double类型将被隐式转换为double...

    C_C++指针经验总结

    指针所占的内存大小取决于编译器和操作系统,通常在32位系统上,指针的大小是4字节,在64位系统上,指针的大小是8字节。 理解了指针的这四个方面,我们就可以更深入地掌握指针的使用。例如,当我们声明一个指针数组...

Global site tag (gtag.js) - Google Analytics