나는 하나의 프로젝트에서 관리되지 않는 다른 코드와 clr하에 컴파일 된 코드를 가지고있다.C++ STD를 방해하는 CLR?
내 common.h 파일에는 필요한 모든 표준 라이브러리 헤더가 포함되어 있습니다. document_manager.cpp (CLR)에 포함 된 main_window.h (WinForm)에 포함 된 manager.h (manager.cpp (CLR 없음)에 대한 전달 선언)에 포함됩니다.
런타임에 나는 모든 종류의 이상한 행동을 취합니다. 한 가지 경우에는 양식이로드되지 않습니다. 여러 번 디버깅을 위해 프로그램을 일시 중지하면 malloc.c에 std :: string에 대한 메모리를 다시 할당하지 못하는 것으로 나타났습니다. 코드를 변경하면 ostream에서 System :: InvalidMemory 예외가 발생할 수 있습니다.
CLR에서 std 라이브러리를 관리하는 것을 어떻게 중지합니까?
누군가 내 파일에 소스를 원하면 물어보십시오.
편집 : 콜 스택에서 양식을로드 할 때 실행되는 관리되는 코드가 있습니다. 창 init 콜백에서 네이티브 전환을 관리하고 관리자 클래스를 사용합니다. 나중에, 나는
std::string error_msg;
error_msg = "Storage Manager: SQLite Error ("; <-- Executing Currently
error_msg += sqlite3_errcode(this->db_p);
error_msg += ") - ";
error_msg += sqlite3_errmsg(this->db_p);
*(this->log) << error_msg.c_str() << std::endl;
에 도착하고 호출 스택은 표준 : : basic_string :: 할당 한 후 다른 표준 : 기능, 그것은에서 끊임없이 붙어있다 마지막으로 malloc에 기능을 보여줍니다.
편집 : 파일 쓰기에 throw되는 예외 :
System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at manager.file_open(manager* , basic_string<char\,std::char_traits<char>\,std::allocator<char> >*)
at DocumentManager.main_window.file_open_mainmenu_Click(Object sender, EventArgs e) in c:\development\document manager\document manager\main_window.h:line 456
at System.Windows.Forms.ToolStripItem.RaiseEvent(Object key, EventArgs e)
at System.Windows.Forms.ToolStripMenuItem.OnClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleClick(EventArgs e)
at System.Windows.Forms.ToolStripItem.HandleMouseUp(MouseEventArgs e)
at System.Windows.Forms.ToolStripItem.FireEventInteractive(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStripItem.FireEvent(EventArgs e, ToolStripItemEventType met)
at System.Windows.Forms.ToolStrip.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.ToolStripDropDown.OnMouseUp(MouseEventArgs mea)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
at System.Windows.Forms.ToolStrip.WndProc(Message& m)
at System.Windows.Forms.ToolStripDropDown.WndProc(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
문제를 재현하는 코드를 게시 할 수 있습니까? 좀 더 구체적인 오류가 도움이 될 수도 있습니다. 어떤 예외가 던져 졌는지, 어디서부터 예외가 나오지 모르더라도 디버깅하기가 상당히 어려워집니다. – jalf
위의 정보가 충분합니까? 문제를 간단하게 재현하는 데 어려움을 겪고 있습니다.하지만 계속하겠습니다. –
왜 downvotes? 이것은 좋은 질문입니다. +1 –