最近写代码时遇到对大量整数判重的问题,想到了标准库当中提供的std::bitset,写了一个简单的样例以后,用gcc编译了很久也没编译成功,通过系统命令看到gcc占用了大量的内存,我想这一定是gcc出了bug。

一个简单的示例如下

// g++ -std=c++17 main.cpp
#include <bitset>
constexpr unsigned N = 1024*1024*1024;
std::bitset<N> b;
int main() {}

通过在网上搜索相关的问题,发现这确实是gcc的一个bug,并且在gcc 7.4才修复。假如无法升级gcc的版本,参考文献中也给出了一个解决方法,在定义变量时初始化即可。

#include <bitset>
constexpr unsigned N = 1024*1024*1024;
std::bitset<N> b(0);
int main() {}
  1. https://stackoverflow.com/questions/55672159/gcc-takes-much-memory-to-compile-c-file-with-very-large-object-on-stack

1 个评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注