我正在运行此代码,在 64 位 vc++ 2005 上编译,在 32GB 的 Windows Server 2008 R2 上。for 循环内部存在访问冲突。
#include <iostream>
using namespace std;
int main(int argc, char* argv[])
{
double *x = new double[536870912];
cout << "memory allocated" << endl;
for(long int i = 0; i < 536870912; i++)
{
cout << i << endl;
x[i] = 0;
}
delete [] x;
return 0;
}
因此,如果 new double[536870912] 中没有异常,为什么在对特定数组位置进行赋值时会出现访问冲突?
还有一点值得一提的是,这个程序在另一台电脑上测试成功。