繁体   English   中英

g++ 为 std::bitset 分配内存不足

[英]g++ out of memory allocating for std::bitset

这里我分配了 10^9 位:

#include <bitset>
#include <iostream>

const int N = 1000000000;
std::bitset<N> b;

int main()
{
    std::cout << sizeof(b) << std::endl;
}

我得到cc1plus.exe: out of memory allocating 268439551 bytes

但是当我这样做时

#include <bitset>
#include <iostream>

const int N = 1000000000;
int l[N/32];

int main()
{
    std::cout << sizeof(l) << std::endl;
}

125000000 字节(125 MB)分配得很好。 如果我将N更改为 10 的不同幂,我会看到两个sizeof是相同的。 我什至看不到 268439551 字节限制的来源,因为这是 268.4 MB,而且我有大约 4 GB 的可用 RAM。 即使在 32 位系统上,~200 MB 也不应该引起问题,并且以某种方式达到了字节限制。 是什么导致了这里的问题?

在具有 8 GB RAM 的 Windows 8.1 上使用 gcc 4.8.3。

这似乎是 C++11 的 GCC 的一个错误: Gcc 使用大量的内存和处理器能力与大型 C++11 位集 -std=c++98编译对我来说是一个临时的解决方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM