Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 试图在windows 7上分配超过2GB的内存_C++_Memory_Runtime - Fatal编程技术网

C++ 试图在windows 7上分配超过2GB的内存

C++ 试图在windows 7上分配超过2GB的内存,c++,memory,runtime,C++,Memory,Runtime,我使用的是Windows7,64位,8GB内存 我需要使alloc超过2GB,但我遇到运行时错误 看看我的代码 #define MAX_PESSOAS 30000000 int i; double ** totalPessoas = new double *[MAX_PESSOAS]; for(i = 0; i < MAX_PESSOAS; i++) totalPessoas[i] = new double [5]; #定义最大比索30000000 int i; double*

我使用的是Windows7,64位,8GB内存 我需要使alloc超过2GB,但我遇到运行时错误

看看我的代码

#define MAX_PESSOAS 30000000

int i;
double ** totalPessoas = new double *[MAX_PESSOAS];
for(i = 0; i < MAX_PESSOAS; i++)
    totalPessoas[i] = new double [5];
#定义最大比索30000000
int i;
double**totalPessoas=新的double*[MAX_PESSOAS];
对于(i=0;i
MAX_PESSOAS设置为3000万,但我至少需要10亿(好的,我知道我需要超过8GB,但nvm,我可以得到它,我只需要知道如何做到这一点)


我使用的是visual studio 2012

如果您的应用程序构建为64位二进制文件,则无需任何特殊步骤,它可以处理超过8GB的数据。 如果您的应用程序构建为32位二进制文件,只要系统支持,您可以通过启用来寻址最多3 GB(如果您运行的是64位Windows,则为4 GB)


如果您知道应用程序运行的操作系统是64位的,那么您最好将其编译为64位二进制文件。

您的进程是32位还是64位?您不需要超过8GB的RAM。您需要了解虚拟内存。Visual Studio 2012有一个很好的调试器。执行调试->异常。。。并在C++异常旁边勾选投掷复选框。在调试器下运行代码,当抛出
std::bad_alloc
时,应用程序将进入调试器,为您提供所需的所有信息。如果在64位版本的Windows上运行32位应用程序,您的应用程序将拥有完整的4GB可用地址空间,如果在链接器中设置了IMAGE\u FILE\u LARGE\u ADDRESS\u AWARE标志(对于/3GB启动开关也是必需的)。谢谢,我已经忘记了!是否可以使用超过3GB的容量?那么内核空间在哪里?@magingax:内核空间内存与用户空间内存是分开的。你可以有地址0x12345678,它会映射到两个不同的页面,这取决于它是从内核空间还是用户空间访问的。在正常32位应用中。2GB(用户空间)+2GB(内核空间)=4GB..但令人惊奇。在Wow64情况下(在64位操作系统上运行32位应用程序),每个人都说4GB可以用于用户空间。那么在这种情况下,内核空间在哪里呢?