"virtual memory exhausted: Cannot allocate memory" 仅在使用调试标志编译时
"virtual memory exhausted: Cannot allocate memory" only when compiling with debug flag
我收到以下代码的错误 (error.cpp):
#include <map>
#include <functional>
#include <vector>
int main()
{
std::map<
int, std::map< std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::string>
> > >
> > >
> > >
> > >
> > >
> > >
> > oups;
}
使用调试标志编译时:
g++ error.cpp -g -o error
我的系统是 Ubuntu 18.04,虚拟机是 g++ 7.5.0 运行。
RAM 为 5GB,Swap 为 2.5GB。硬盘space还剩1GB。
这正常吗?错误?限制?
以上代码的“更好”替代方案是什么? (c++14)
你在那个定义中有 8+7+6 个字符串,对吧?所以,我会说你手上的是一个 arity 21 的关系。为什么不试试:
constexpr const std::size_t my_arity = 21;
std::unordered_set<std::array<std::string, my_arity>> oups;
代替?
我收到以下代码的错误 (error.cpp):
#include <map>
#include <functional>
#include <vector>
int main()
{
std::map<
int, std::map< std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::map<std::string, std::map<std::string,
std::map<std::string, std::string>
> > >
> > >
> > >
> > >
> > >
> > >
> > oups;
}
使用调试标志编译时:
g++ error.cpp -g -o error
我的系统是 Ubuntu 18.04,虚拟机是 g++ 7.5.0 运行。 RAM 为 5GB,Swap 为 2.5GB。硬盘space还剩1GB。
这正常吗?错误?限制?
以上代码的“更好”替代方案是什么? (c++14)
你在那个定义中有 8+7+6 个字符串,对吧?所以,我会说你手上的是一个 arity 21 的关系。为什么不试试:
constexpr const std::size_t my_arity = 21;
std::unordered_set<std::array<std::string, my_arity>> oups;
代替?