use*_*143 0 c++ linux windows boost 32bit-64bit
我编写了一个C++程序,当它被编译为64位可执行文件时,它在Linux上运行良好.我还在Windows上将其编译为32位可执行文件,它崩溃时出现以下消息:
boost\boost_1_55_0\boost/test/minimal.hpp(123): exception "std::bad_alloc: bad allocation" caught in function: 'int __cdecl main(int,char *[])'
Run Code Online (Sandbox Code Playgroud)
由于我必须分配大小为20000*20000的整数矩阵,我告诉自己我可能超过了32位平台上允许的大小......
所以我将它编译为64位Windows可执行文件,它工作正常.为了检查我的假设是否正确,我决定将其编译为32位Linux可执行文件并且...它也可以正常工作?所以我不知道坠机的原因是什么......
32位Windows为您提供了不到2GB的地址空间,各种DLL,您的程序,堆栈以及您在各个地方点缀的任何其他内存.这有时意味着它在一个连续的块中没有1.5GB给你.
它在32位Linux中工作,因为我相信它实际上为您提供了3GB的地址空间.否则,它也会遇到同样的问题.
| 归档时间: |
|
| 查看次数: |
82 次 |
| 最近记录: |