有许多程序员在遇到32位程序内存超过2G就崩溃了,因为2G是32位程序用户空间的最大值,于是就选择编译成64位程序,认为64位内存空间就一下在上升到了64位地址空间最大值了。

这种理解是不对的。关键还得由硬件来决定。

只能说:你的用户空间可能扩容了一点点而已,可能你的程序运行空间适当宽敞点了。但不一定。

硬件才是决定的关键。软件上的位数只是理论值。

64位地址线编址最大范围是16EB, (1EB=1024PB, 1PB=1024TB, 1TB=1024GB), 但是目前我们的CPU地址线却达不到64根(现在是2022年)。

举例:

  • 第13代酷睿i9-13900@5.80GHZ的CPU,地址线37根支持最大编址才128GB;
  • 你的主板,它可能只设计了36根地址线,最大支持64GB内存;
  • 主板内存插槽上,实际上直插了可怜的4GB内存条;
  • 这4GB是电脑上几百个程序共享的,剩余可用物理内存仅剩几百兆;

这种情况,实际上你的可用内存空间其实一点也没有增大,就算你编译成64位程序,也没有实质性的改变。

那什么情况下编译成64位程序,才是实实在在的有帮助了?

  • 首先看windows是不是64位的
  • 其次看可用物理内存还剩多少,如果仅剩1.50GB,你编译成64位也没用。如果你的物理可用内存还剩下3GB,那会有点用。
  • 如果你的程序使用内存超过2G,但是小于3G,我建议你编译的时候启用大地址即可,无须编译成64位,因为编译成64位那依赖的一大批的32位DLL都要跟着编译,先不说你有没有源代码,你把它们都编译通过耗费的时间已经足够磨炼你的心性了。
  • 如果你的内存条超过4GB,而且剩余物理空间远远大于2GB,你可以选择编译成64位。
  • 程序使用内存都超过2GB了是不是该考虑一下程序架构不合理了,该从算法上去设计低内存消耗的架构了。

搁笔。如有疑问,可以留言或私信。

Win32:编译64位程序的注意点相关推荐

  1. VS中编译64位程序以及遇到的问题(E0000235)

    安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器. 1. 选择"Build" – "Configuration Manager"菜单 ...

  2. windows下编译64位程序时没有没_WIN32定义

    _WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...

  3. 64位Ubuntu上编译32位程序

    1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...

  4. 在64位linux下编译32位程序

    一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...

  5. Android编译32或64位程序

    ★★★ 个人博客导读首页-点击此处 ★★★ 1.查看一个程序是32位还是64位: $ readelf -h tee-supplicant ELF Header: Magic: 7f 45 4c 46 ...

  6. 64位的GCC 编译32位程序

    64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...

  7. 使用VC6将32位程序编译成为64位程序(这个才是可行的)

    山上明月 使用VC6将32位程序编译成为64位程序 看了好多好多资料,自己也太过依赖现有的资料,按部就班不是真理不是真理!!! 主要内容是参照http://www.vckbase.com/docume ...

  8. C++工作笔记-32位和64位程序的区别

    原文地址: https://blog.csdn.net/nma_123456/article/details/45077345 文章结尾有对此博文的修正和补充! 由于操作系统内存分配的不同,导致软件开 ...

  9. 32位和64位程序的区别

    由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件,此处以VS为例. 1.编译程序根据需要选择不同的编译环境: X86和win32位32位程序,X64为64位程序,可以选择不同的编 ...

最新文章

  1. 在SecureCRT下使用sz下载和rz上传文件
  2. 动态折线图 python_python 怎么做个动态折线
  3. 搜狗手机浏览器_搜狗推广开户费多少钱?【搜狗开户代理商】
  4. D3 BarChart
  5. SpringBoot 07 之JPA使用
  6. Flex实现双轴条状图
  7. AI圣经 PRML《模式识别与机器学习》-读书笔记汇总贴
  8. Python金融大数据风控建模实战
  9. Origin introduction and install
  10. 【面试分享】奇安信渗透测试工程师,通过!
  11. 如何使用报表工具制作条形码报表
  12. 现代女生令我们如此失望
  13. xjoi 1542 玩玩拉格朗日四平方和定理
  14. 【计算机网络】Socket编程
  15. extern 声明用法
  16. z-index使用以及失效的处理方法
  17. 老闪创业那些事儿(外传)——流程下的工具人
  18. 云队友丨以末求财,用本守之
  19. 新买笔记本误删office2021解决方法
  20. el-tree中更改鼠标移动时、点击时和失去焦点时的背景色

热门文章

  1. hdu2198 How many elements you must throw out? C语言动态规划题
  2. Ubuntu 18.04.3 双屏显示其中一个屏幕黑屏无法使用的问题 显卡驱动安装问题
  3. debian 刷新dns命令
  4. 七牛云上传图片和视频
  5. 最佳情侣身高差 (10 分)
  6. linux查询系统硬件配置
  7. 计算机网络的一些知识点
  8. 计算机网络基础之互联网的互联设备讲解
  9. 了凡四训——改变命运之学
  10. 【ssd】M.2的SATA,PCI-x2(Socket 2 ),PCI-x4(Socket 3)了解一下,老程序员都快被新硬件搞蒙圈了