分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
关于32位程序申请大内存问题(1.6G). 我在win7 64系统上面测试
Visual studio 10
- int* Test=new int[1024*1024*200];
- int* Test2=new int[1024*1024*200];
int* Test=new int[1024*1024*200];int* Test2=new int[1024*1024*200];
申请1.6G内存.
抛出:
cpptest2.exe 中的 0x770e15ee 处有未经处理的异常:
Microsoft C++ 异常: 内存位置 0x0044f660 处的 std::bad_alloc。
这只是一个简单的测试 . 我做三维仿真.. 内存要用到2G-4G左右.. 如何在64位系统 32位程序申请到大内存啊..
------解决方案--------------------------------------------------------
32位程序不可能申请大于4G的内存,linux在X86系统下,理论上用户态可以申请3G内存(有1G的地址空间留给内核),内核态可以申请4G内存,windows你需要查一查其系统规范。
------解决方案--------------------------------------------------------
用文件读写模拟内存读写是在32位操作系统下使用超过4G内存的不二法门。
参考_lseeki64
32位模式下C/C++程序到底可以用多少内存
【成都IT培训】32位模式下C/C++程序到底可以用多少内存
32 位的程序寻址空间是 4G,因此能用的内存应该有 4G,除掉一些系统等使用的乱七八糟的东西,3G 内存应该没有问题吧,这些只是猜测,写个程序测一下,结果如下:
测试结论:
1. 栈内存最大可用 768k 左右;
2. 堆内存最大可用 1.586G 左右。
结果令人沮丧,才 1.6 G!!!
测试环境:Windows7 2G、IBMSL300、VC9
附录测试程序等
测试程序只考虑 windows,首先,说明一下相关知识:
内存可以来自两个地方,在栈空间上分配的内存(栈内存)和在堆空间分配的内存(堆内存)。
栈内存,通过 alloca 来申请。
堆内存,通过 malloc、new、VirtualAlloc 来申请。
测试程序如下:【成都IT培训】