unordered_map编译良好,但执行时出现段错误

时间:2020-02-28 10:30:25

标签: c++ c++11

我很难理解为什么以下程序在执行时会产生核心转储。

   #include <iostream>
   #include <unordered_map>
   using namespace std;
   int main()
   {
       std::unordered_map<int,int> hMap;
       return 0;
   }

没有编译警告或错误,但是在我执行它时会给出核心转储。 这个问题与平台或编译器有关吗?还是我在这里想念东西?

我正在使用以下g ++命令编译代码

g++ -g -Wall -Werror -std=c++11 -o file file.cpp

平台是

Linux 3.10.0-1062.4.1.el7.x86_64 #1 SMP Wed Sep 25 09:42:57 EDT 2019 x86_64 x86_64 x86_64 GNU/Linux

编译器:

gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)

在调试时,我得到以下堆栈跟踪:

#0  0x0000000000601e30 in memset@@GLIBC_2.2.5 ()
#1  0x0000000000400fd4 in std::_Hashtable<int, std::pair<int const, int>, std::allocator<std::pair<int const, int> >, std::__detail::_Select1st, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets (
    this=0x7ffffffe8310, __n=11) at /usr/include/c++/4.8.2/bits/hashtable.h:780
#2  0x0000000000400db4 in std::_Hashtable<int, std::pair<int const, int>, std::allocator<std::pair<int const, int> >, std::__detail::_Select1st, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_Hashtable (this=0x7ffffffe8310, 
    __bucket_hint=10, __h1=..., __h2=..., __h=..., __eq=..., __exk=..., __a=...) at /usr/include/c++/4.8.2/bits/hashtable.h:831
#3  0x0000000000400bc5 in std::_Hashtable<int, std::pair<int const, int>, std::allocator<std::pair<int const, int> >, std::__detail::_Select1st, std::equal_to<int>, std::hash<int>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::---Type <return> to continue, or q <return> to quit---
__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_Hashtable (this=0x7ffffffe8310, 
    __n=10, __hf=..., __eql=..., __a=...) at /usr/include/c++/4.8.2/bits/hashtable.h:397
#4  0x0000000000400aff in std::unordered_map<int, int, std::hash<int>, std::equal_to<int>, std::allocator<std::pair<int const, int> > >::unordered_map (this=0x7ffffffe8310, __n=10, __hf=..., __eql=..., __a=...)
    at /usr/include/c++/4.8.2/bits/unordered_map.h:142

0 个答案:

没有答案