如果我编译如下:分配一个999999999单元格阵列| C++
long double *N;
N = new long double[999999999];
我得到这个错误:
error C2148: total size of array must not exceed 0x7fffffff bytes
所以,我尝试编译如下:
long double *N;
long double *N2;
N = new long double[999999999];
N2 = N + 99999999;
N2 = new long double[900000000];
我还是没有运行的程序,但我很确定我会得到一个heap corruption detected
错误,因为我不想用N导航,然后在某个点导航N2。
有没有安全的为什么只用一个指针来做到这一点?
你有那么多的记忆吗?此外,您必须使用MSVC的旧版本才能获得错误C2148。 – Mysticial 2012-03-08 06:42:44
我正在使用MSVC 2008 – Jonas 2012-03-08 06:44:23
这是编译器,体系结构(X86 32位还是x86-64 64位?)和系统相关的。所以你应该有更多的细节才能得到答案。然而,编译器可能是正确的:在你的机器上没有办法分配10亿双(应该吃8G字节;你确定你有足够的内存吗?) – 2012-03-08 06:44:49