2013-10-22 62 views
1

我在這些代碼行上得到了奇怪的分段錯誤。std :: string中的分段錯誤

OutputHandler(std::string const& path) throw(std::exception); 

MyClass::MyClass() 
: basepath(boost::filesystem::canonical("./").string() + "/"), 
outputHandler(basepath + "log.log") {} // Error traces back to this line (line 11) 

分割錯誤:

#0 0x00007ffff6fd512b in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)() 
    from /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
#1 0x0000000000423bd7 in std::operator+<char, std::char_traits<char>, std::allocator<char> > (__lhs=..., __rhs=0x4659a1 "log.log") 
    at /usr/include/c++/4.8/bits/basic_string.h:2405 
#2 0x0000000000414466 in MyClass::MyClass (this=0x7fffffffd6f0) at ./source/MyClass.cpp:11 
#3 0x0000000000464a28 in main() at ./source/main.cpp:10 

是什麼原因造成這個錯誤,我該如何解決?我猜測在將basepath + "log.log"轉換爲std::string時會出現問題嗎?

+0

您的成員變量'basepath',是否有任何機會參考? (當然,我的意思是) –

+0

我從不強調,「關於你寫的代碼問題的問題必須包含有效的代碼來重現它」_。 –

+0

'MyClass :: basepath'是一個簡單的'std :: string'聲明爲'\t std :: string basepath;'在類聲明中。 –

回答

3

成員變量的初始化順序是它們在類定義中聲明的順序,而不是它們在初始化程序中列出的順序。 basepath字符串可能尚未初始化。

相關問題