簡體   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