Win32:编译64位程序的注意点
有许多程序员在遇到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位程序的注意点相关推荐
- VS中编译64位程序以及遇到的问题(E0000235)
安装64位操作系统不是编译64位程序的必要条件,关键是要装64位程序的编译器. 1. 选择"Build" – "Configuration Manager"菜单 ...
- windows下编译64位程序时没有没_WIN32定义
_WIN32定义的初衷是为了区分16位和32位程序,但是目前很多项目的代码都是使用_WIN32来判定是否是windows平台,所以目前在windows平台下编译32位和64位程序时,编译器都会预定义了 ...
- 64位Ubuntu上编译32位程序
1.确认主机为64位架构的内核,应该输出为adm64,执行: $ dpkg --print-architecture 2.确认打开了多支架功能,应该输出为i386,执行: $ dpkg --print ...
- 在64位linux下编译32位程序
一般情况下我们最好是在一个平台上编译本平台的二进制程序,比如在32位平台上编译32位程序而在64位平台上编译64位程序. 现在64位的系统(这里主要指x86_64系统,包括AMD64和Intel的EM ...
- Android编译32或64位程序
★★★ 个人博客导读首页-点击此处 ★★★ 1.查看一个程序是32位还是64位: $ readelf -h tee-supplicant ELF Header: Magic: 7f 45 4c 46 ...
- 64位的GCC 编译32位程序
64位的GCC 编译32位程序 编译32的程序,只需要加上-m32就可以了 gcc -m32 llong.c 但是提示下面的错误 /usr/bin/ld: 当搜索用于 /usr/lib/gcc/x86 ...
- 使用VC6将32位程序编译成为64位程序(这个才是可行的)
山上明月 使用VC6将32位程序编译成为64位程序 看了好多好多资料,自己也太过依赖现有的资料,按部就班不是真理不是真理!!! 主要内容是参照http://www.vckbase.com/docume ...
- C++工作笔记-32位和64位程序的区别
原文地址: https://blog.csdn.net/nma_123456/article/details/45077345 文章结尾有对此博文的修正和补充! 由于操作系统内存分配的不同,导致软件开 ...
- 32位和64位程序的区别
由于操作系统内存分配的不同,导致软件开发过程中,需要编译不同版本的软件,此处以VS为例. 1.编译程序根据需要选择不同的编译环境: X86和win32位32位程序,X64为64位程序,可以选择不同的编 ...
最新文章
- 在SecureCRT下使用sz下载和rz上传文件
- 动态折线图 python_python 怎么做个动态折线
- 搜狗手机浏览器_搜狗推广开户费多少钱?【搜狗开户代理商】
- D3 BarChart
- SpringBoot 07 之JPA使用
- Flex实现双轴条状图
- AI圣经 PRML《模式识别与机器学习》-读书笔记汇总贴
- Python金融大数据风控建模实战
- Origin introduction and install
- 【面试分享】奇安信渗透测试工程师,通过!
- 如何使用报表工具制作条形码报表
- 现代女生令我们如此失望
- xjoi 1542 玩玩拉格朗日四平方和定理
- 【计算机网络】Socket编程
- extern 声明用法
- z-index使用以及失效的处理方法
- 老闪创业那些事儿(外传)——流程下的工具人
- 云队友丨以末求财,用本守之
- 新买笔记本误删office2021解决方法
- el-tree中更改鼠标移动时、点击时和失去焦点时的背景色
热门文章
- hdu2198 How many elements you must throw out? C语言动态规划题
- Ubuntu 18.04.3 双屏显示其中一个屏幕黑屏无法使用的问题 显卡驱动安装问题
- debian 刷新dns命令
- 七牛云上传图片和视频
- 最佳情侣身高差 (10 分)
- linux查询系统硬件配置
- 计算机网络的一些知识点
- 计算机网络基础之互联网的互联设备讲解
- 了凡四训——改变命运之学
- 【ssd】M.2的SATA,PCI-x2(Socket 2 ),PCI-x4(Socket 3)了解一下,老程序员都快被新硬件搞蒙圈了