我正在设置一个非常大的数组来处理原始神经元模拟。为数组分配内存(大约 8-9 Gig)时,New[] 会出错。我能够获得 C 风格的 malloc 来保留内存,但是一旦我尝试分配一个值,我就会得到一个访问冲突读取位置 0xffffffffffffffff。
我正在运行带有 Visual Studio 2010 Professional 的 64 位 Windows 7。我也尝试过使用嵌套循环的 malloc 和 new[] ,它们也崩溃了。
如果 malloc 不可能做到这一点,我还应该考虑什么?我需要能够非常快速地访问大内存空间的东西。谢谢您的考虑。
#include "stdafx.h"
#include <iostream>
#include <time.h>
#include <stdlib.h>
#include <iomanip>
#include <locale>
#include <math.h>
using namespace std;
int nRows;
int nCols;
int nDepth;
int nData;
int main()
{
//unsigned long int brainSize=100;
//nRows = int(pow(brainSize,0.3333333333333333333333333333))+1;
nRows=80;
nCols=nRows;
nDepth=nRows;
nData=2000;
double brainData = nRows*nCols*nDepth*nData;
double brainBits = 4*brainData;
cout.imbue(std::locale(""));
cout << fixed << "Brain size : " << nRows*nCols*nDepth << " neurons \nBrain integers : " << setprecision(0) << brainData << "\nBrain bits: " << brainBits << endl;
__int64 ****brain;
brain = (__int64 ****)malloc(nRows*nCols*nDepth*nData*sizeof(__int64 ****));
cout << "Brain initialized.";
brain [2][2][2][2]=2; // error is here.
cout << brain[2][2][2][2];
int breaker;
cin >> breaker; //pause
return 0;
}