Tôi đang sử dụng thư viện log4cplus và tôi không thể đăng nhập để hoạt động.Truy cập vị trí đọc vi phạm - chuỗi không chấm dứt (bộ nhớ không đọc được)
tôi sử dụng mã này:
PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT("log.properties"));
Logger g_logger = Logger::getInstance(LOG4CPLUS_TEXT("mylogger"));
LOG4CPLUS_WARN(g_logger, LOG4CPLUS_TEXT("test test test"));
Và nó phá vỡ tại LOG4CPLUS_WARN
với lỗi: Access violation reading location
Đây là Call Stack của tôi:
msvcp110d.dll!std::basic_streambuf<wchar_t,std::char_traits<wchar_t> >::egptr() Line 236 C++
ProjectClientd.exe!std::basic_stringbuf<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::str() Line 103 C++
ProjectClientd.exe!std::basic_ostringstream<wchar_t,std::char_traits<wchar_t>,std::allocator<wchar_t> >::str() Line 553 C++
> ProjectClientd.exe!wWinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInstance, wchar_t * lpCmdLine, int nCmdShow) Line 55 C++
ProjectClientd.exe!__tmainCRTStartup() Line 528 C
ProjectClientd.exe!wWinMainCRTStartup() Line 377 C
nơi wWinMain ... line 55
là nơi LOG4CPLUS_WARN
đang được gọi.
Tôi đã kiểm tra những gì xảy ra với basic_ostringstream
này và có vẻ như một cái gì đó là điều sai lầm với mã hóa hoặc một cái gì đó:
Non-chấm dứt chuỗi (bộ nhớ không đọc được) và một bó toàn bộ chữ lạ ở phần cuối của chuỗi của tôi? Điều gì có thể gây ra nó?
Tôi không biết log4cplus nhưng nó có vẻ là một sự nhầm lẫn char char/hẹp. Chú ý dấu vết stack của bạn nói 'basic_stringbuf
john
@john Nhìn vào khung nhìn '_Stringbuffer' mở rộng, nó là một chuỗi ký tự rộng, tất cả các quyền (' L "test test ... "'). – IInspectable
@john Tôi đã thử với '_T', cùng một kết quả thật không may. –