大数组C++,矢量没有内存

kuk*_*kis -1 c++ arrays

我需要C中的大数组来存储一些数据.我正在研究的事情与DNA测序有关.我正在使用Visual Studio 2013.

首先,我尝试使用全局静态变量

static oligo SPECTRUM[C1][C2]
Run Code Online (Sandbox Code Playgroud)

寡核苷酸结构含有8个整数,C1为100000和C2 500.

但是视觉上说阵列很大.然后我问Google,他说使用矢量是个好主意.所以我通过用下面的代码替换上面的代码来切换到这些

static std::vector<std::vector<oligo>> SPECTRUM;
Run Code Online (Sandbox Code Playgroud)

据说在使用之前调整矢量是一件好事,所以我做了:

SPECTRUM.resize(C1);
for (int i = 0; i < C1; i++)
{
    SPECTRUM[i].resize(C2);
}
Run Code Online (Sandbox Code Playgroud)

但现在我在执行上面的代码时抛出了运行时异常(调整大小)

An unhandled exception of type 'System.Runtime.InteropServices.SEHException' occurred in ConsoleApplication1.exe
Run Code Online (Sandbox Code Playgroud)

在文件xmemory0中.视觉显示此处抛出异常

else if (((size_t)(-1) / sizeof (_Ty) < _Count)
    || (_Ptr = ::operator new(_Count * sizeof (_Ty))) == 0)
    _Xbad_alloc();  // report no memory
Run Code Online (Sandbox Code Playgroud)

我还想让你知道,我的计算机上有4 GB RAM可用,我估计我的程序不应该使用超过1 GB的RAM.

Sne*_*tel 5

每个oligo将消耗32个字节.这意味着如果C1"大约100k",并且C2大于600,则阵列将消耗整个2 GB.