Std haritaları ile garip davranışlar sergilediğim bir projem var.#pragma pack error nedeniyle yolsuzluk hatası - std harita bozulması- çökmesine neden oluyor
Kendi özel haritamızın, özel türün bir işaretçisine eşlenmiş dizeleri tanımladım. Haritaya ilk çifti ekledikten sonra haritayı aştığımda uygulama çöktü.
Çok fazla uğraşmadan sonra haritayı değiştirdim ve uygulamamdaki ilk aramaya taşıdım ve hala çöküyor. Neler olabileceğine dair hiçbir fikrim yok. Herhangi bir yardım takdir edilecektir.
Şu anda kilitlenen kod İşte.
CISInterface Debug [C/C++ Application]
gdb/mi (10/31/12 6:02 PM) (Suspended)
Thread [1] (Suspended: Signal 'SIGSEGV' received. Description: Segmentation fault.)
6 std::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const() 0x00000032fd49c416
5 std::operator< <char, std::char_traits<char>, std::allocator<char> >() basic_string.h:2317 0x0000000000417ec7
4 std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::operator() stl_function.h:230 0x000000000041706f
3 std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique() stl_tree.h:1170 0x0000000000415d00
2 std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::insert() stl_map.h:500 0x00000000004150eb
1 main() CISInterface.cpp:29 0x000000000041916d
gdb (10/31/12 6:02 PM)
/home/cillian/workspace/CISInterface/Debug/CISInterface (10/31/12 6:02 PM)
diğer alanlarda ben sorunlara neden olabileceğini bakıyor olmalıdır Ne - burada
LoggerPtr syslogger(Logger::getLogger("CISInterface"));
int main(int argc, char *argv[])
{
typedef std::map<string, string> MyMapDef;
MyMapDef tmpString;
tmpString.insert(MyMapDef::value_type("0000", "d"));
tmpString.insert(MyMapDef::value_type("1111", "d")); //Crashes here.
tmpString.insert(MyMapDef::value_type("2222", "d"));
// std::string configFile;
// int c;
// if(argc < 2)
// {
// //Must have c option
// std::cout << "Usage -c configFileName" << std::endl;
// exit(EXIT_FAILURE);
// }
//Rest of main commented out.
...
Ve
yığın izidir. Bağlandığım kütüphanelerde olabilir mi? Aynı kütüphanelerle bağlantı kuran bu kod satırları ile ikinci bir proje oluşturdum (ancak bunlara çağrı yapan herhangi bir kod yok.) Ve çökmez.
Gönderdiğiniz kod gerçekten tüm kod ise, o zaman soruna neden olabilir ** sadece ** şey "LoggerPtr syslogger (Logger :: getLogger (" CISInterface "))' nin neden olduğu yığın bozulmasıdır. "Ana" kod doğrudur. Bu çizgiyi yorumlamayı deneyin ve hala kilitlenme olup olmadığını görün. – john
Sadece 'main() 'nı kopyaladım ve burada çalıştırdım (Ubuntu 12.04, gcc 4.6.3). Şimdiye kadar sorun yok. Hata başka bir yerde olmalı. –
Satır 29 hangisi? –