Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/148.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C+的可能原因是什么+;无序映射以生成以下gdb输出?_C++_Unordered Map - Fatal编程技术网

C++ C+的可能原因是什么+;无序映射以生成以下gdb输出?

C++ C+的可能原因是什么+;无序映射以生成以下gdb输出?,c++,unordered-map,C++,Unordered Map,我使用的是C++11中的无序映射,它的键是由各种数字和字符组成的串接字符串。我正在使用的密钥示例如下: coeff_key=“”+到_字符串(第一个索引)+“”+到_字符串(第二个索引)+”+“”+到_字符串(i)+“”+到_字符串(j)+” 我可以填充所有地图,但一旦我尝试访问某个密钥,就会出现问题。此外,如果first_k_index的值可以是0-3,则不会出现错误。但是如果first_k_index的值可以是0-9,则代码不会完全运行。这是gdb的输出 terminate called a

我使用的是C++11中的无序映射,它的键是由各种数字和字符组成的串接字符串。我正在使用的密钥示例如下:

coeff_key=“”+到_字符串(第一个索引)+“”+到_字符串(第二个索引)+”+“”+到_字符串(i)+“”+到_字符串(j)+”

我可以填充所有地图,但一旦我尝试访问某个密钥,就会出现问题。此外,如果
first_k_index
的值可以是0-3,则不会出现错误。但是如果
first_k_index
的值可以是0-9,则代码不会完全运行。这是gdb的输出

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc

Program received signal SIGABRT, Aborted.
0x00002aaab1d2a387 in raise () from /lib64/libc.so.6
Missing separate debuginfos, use: debuginfo-install glibc-2.17-307.el7.1.x86_64 libgcc-4.8.5-39.el7.x86_64 libstdc++-4.8.5-39.el7.x86_64
(gdb) where
#0  0x00002aaab1d2a387 in raise () from /lib64/libc.so.6
#1  0x00002aaab1d2ba78 in abort () from /lib64/libc.so.6
#2  0x00002aaab15357d5 in __gnu_cxx::__verbose_terminate_handler() () from /lib64/libstdc++.so.6
#3  0x00002aaab1533746 in ?? () from /lib64/libstdc++.so.6
#4  0x00002aaab1533773 in std::terminate() () from /lib64/libstdc++.so.6
#5  0x00002aaab1533993 in __cxa_throw () from /lib64/libstdc++.so.6
#6  0x00002aaab1533f2d in operator new(unsigned long) () from /lib64/libstdc++.so.6
#7  0x00002aaab1533fc9 in operator new[](unsigned long) () from /lib64/libstdc++.so.6
#8  0x00000000004035b6 in main ()

有多种可能的原因,最可能的原因是没有足够的内存来构建映射。 另见:


此问题显示的代码不符合stackoverflow.com的要求。这意味着这里的任何人都不可能最终回答这个问题;但最多只能猜测。你的问题应该显示一个最小的例子,不超过一到两页的代码(“最小”部分),其他人可以剪切/粘贴、编译、运行和复制所描述的问题(“可复制”部分),完全如图所示(这包括任何辅助信息,如程序输入)。有关更多信息,请参阅。在调用堆栈中有
operator new[]
,但标准容器使用
std::allocator::allocate
,它只调用
operator new
,因此可能在代码中的其他地方