windows下一次关于32位程序的崩溃
- 问题描述
最近写证券数据计算的相关代码,生成32位exe后自测完美运行,但是在测试环境跑一段时间后莫名其妙的崩溃,dump文件生成为0,而后一段折腾后,跑了几遍64位的代码,发现测试环境完美运行,我重新运行32位exe,观察进程吃内存情况,发现再内存占用2.7g左右时,程序崩溃…
- 32位exe和64exe的区别
- 首先是代码中,32位指针占用4字节,64位指针占用8字节,寻址能力加强
- 32位exe可以运行在64位系统上,反之则不行
- 32位程序中基本类型占用字节和64位不同
- x86指的是32位,x64指的是32位
- 32bit寻址为4GB(232,4G)64bit寻址能力理论为无限大(264,64根地址线),实际物理限制,达不到这么多
- 崩溃原因分析
程序在运行起来后,32位程序最多能使用到4GB,这是32位程序寻址最多4GB,由于系统要为自身预留1GB的空间备用,所以实际程序占用内存达到3GB或者更小时,程序就会崩溃, 64位系统寻址理论能达到无限,实际受到物理机内存的限制