Valgrind工具DHAT在std :: unordered_map中显示内存问题

时间:2018-01-25 14:43:39

标签: c++ valgrind

我最近在代码中运行了valgrind工具dhat并获得了以下结果。它说死亡=无,似乎是内存泄漏。但这在unordered_map中显示。 我启用了-g模式。

如果这是STL中的问题或代码中的问题,请告诉我。

   ==27444== -------------------- 22 of 50 --------------------
==27444== max-live:    245,820 in 5 blocks
==27444== tot-alloc:   245,820 in 5 blocks (avg size 49164.00)
==27444== deaths:      none (none of these blocks were freed)
==27444== acc-ratios:  0.00 rd, 1.00 wr  (48 b-read, 246,108 b-written)
==27444==    at 0x4C28425: operator new(unsigned long) (vg_replace_malloc.c:333)
==27444==    by 0x6EAB0F0: __gnu_cxx::__pool<true>::_M_initialize() (in /usr/lib64/libstdc++.so.6.0.19)
==27444==    by 0x5A86D4: __gnu_cxx::__pool<true>::_M_initialize_once() (mt_allocator.h:329)
==27444==    by 0x5AF772: __gnu_cxx::__common_pool_base<__gnu_cxx::__pool, true>::_S_initialize() (mt_allocator.h:433)
==27444==    by 0x5410E1F: pthread_once (pthread_once.S:103)
==27444==    by 0x5879C2: __gthread_once(int*, void (*)()) (gthr-default.h:699)
==27444==    by 0x5AF4E6: __gnu_cxx::__common_pool_base<__gnu_cxx::__pool, true>::_S_initialize_once() (mt_allocator.h:445)
==27444==    by 0x6231F0: __gnu_cxx::__mt_alloc<std::__detail::_Hash_node_base*, __gnu_cxx::__common_pool_policy<__gnu_cxx::__pool, true> >::allocate(unsigned long, void const*) (mt_allocator.h:694)
==27444==    by 0x622294: std::_Hashtable<unsigned long, std::pair<unsigned long const, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*>, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash1<unsigned long, void>, 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(unsigned long) (hashtable.h:779)
==27444==    by 0x620399: std::_Hashtable<unsigned long, std::pair<unsigned long const, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*>, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash1<unsigned long, void>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_Hashtable(unsigned long, std::hash1<unsigned long, void> const&, std::__detail::_Mod_range_hashing const&, std::__detail::_Default_ranged_hash const&, std::equal_to<unsigned long> const&, std::__detail::_Select1st const&, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> > const&) (hashtable.h:831)
==27444==    by 0x61E6FA: std::_Hashtable<unsigned long, std::pair<unsigned long const, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*>, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> >, std::__detail::_Select1st, std::equal_to<unsigned long>, std::hash1<unsigned long, void>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_Hashtable(unsigned long, std::hash1<unsigned long, void> const&, std::equal_to<unsigned long> const&, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> > const&) (hashtable.h:397)
==27444==    by 0x61CB5C: std::unordered_map<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*, std::hash1<unsigned long, void>, std::equal_to<unsigned long>, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> > >::unordered_map(unsigned long, std::hash1<unsigned long, void> const&, std::equal_to<unsigned long> const&, __std_cxx::__mt_alloc<std::pair<unsigned long, __std_cxx::ExtKey_Map<std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >, unsigned long, __std_cxx::__mt_alloc<std::pair<unsigned long, std::unordered_map<int, unsigned long, std::hash<int>, std::equal_to<int>, __std_cxx::__mt_alloc<unsigned long> >*> > >*> > const&) (unordered_map.h:142)
==27444== 

0 个答案:

没有答案