我想运行一个进程,其中需要有一个std::vector
的std::tuple<long unsigned int, long unsigned int>
。我正在进行的测试应该创建一个大约为47,614,527,250(约47亿)个元组的向量,但实际上在创建时就会崩溃,并显示错误消息terminate called after throwing an instance of 'std::bad_alloc'
。我的目标是使用大约两倍大小的向量运行此脚本。下面是代码:
arc_vector = std::vector<std::tuple<long unsigned int, long unsigned int>>(arcs);
这里的arcs
是一个被引用数值的long unsigned int
。
我能否并且如何增加内存大小?这个脚本正在一台拥有40个核心和大约200GB内存的机器上运行,所以我知道内存本身不是问题。
sizeof(std::tuple<long unsigned int, long unsigned int>)
乘以 470 亿字节的连续内存。在64位机器上(带有64位的long
),这相当于超过750 GiB的内存作为一个单一可用块。 - Some programmer dudestd::tuple
向量作为旧库参数的事实也令人生疑。 - François Andrieux