저는 몇 주 동안 기본 CLR 호스팅을 사용하고 있습니다. 처음에는 꽤 잘 돌아갔다. 하지만 나중에 응용 프로그램의 일부가 힙 손상을 일으키는 것으로 나타났습니다. 이 문제는 CLR 시작으로 인한 것임을 알았습니다. (코드의 짧은 버전은 다음을 참조하십시오.) #pragma comment(lib, "mscoree.lib")
#include <mscoree
내가 서명을 수행하기 위해 스마트 카드를 사용하면 내가 C를 사용하여 ++ 및 Visual Studio 2010 하고있다가 나타납니다 : "프로그램이 완료되면. " 출력에 Windows has triggered a breakpoint in MyProgram.exe.
This may be due to a corruption of the heap, and
시작 위치를 모르겠습니다 ... 프로그램을 닫을 때 Visual Studio에서 계속 힙 손상 오류가 발생합니다. 그것이 부서지는 위치는 다양합니다. 40 시간 이상 동안 나는 (스마트 포인터 제거, 구현 숨기기 제거, 스마트 포인터 재 추가, 모든 클래스를 복사 불가능하게 만들기, 소멸자를 비공개로 만드는 등) 코드를 변경하는 데 소비했다. stack :
CDB (Microsoft Console Debugger) 및 WinDbg을 사용하여 힙 손상이 발생했을 때 ReadFile에 P/Invoke을 강제로 중단하려고 시도했습니다. 나는 chBuf 배열에 할당 한 것보다 더 많은 바이트를 텍스트 파일에서 읽습니다. 디버거에서 GC.Collect 이후에 액세스 위반이 표시되지 않습니다. 이 너무 늦습니다.입니다.
저는 임베디드 장치에서 Linux를 사용 중입니다. 내 아키텍처는 armv5입니다. 상당히 큰 (~ 30kloc) 시간이 지남에 따라 발생하는 일종의 힙 손상이 있습니다. 내 아치가 지원되지 않으므로 valgrind를 실행할 수 없습니다. 내 응용 프로그램이 스레드를 사용하고 스레드 중 하나에서 손상이 가장 많이 발생하기 때문에 제한된 gdb 만 실행할 수
릴리스 모드에서 컴파일 할 때 std :: string 할당 해제시 힙 손상이 발생합니다. 실제로 Atc.dll이라는 DLL에서 Utilies.dll이라는 다른 DLL에있는 함수를 호출합니다. Atc.dll의 기능이 끝나면 힙 손상이 발생합니다.는 Atc.dll에서이 제 기능 : std::string ConfigFileManager::getPathXMLFi
MSDN에 따라 Visual Studio에서는 힙 손상을 추적하기 위해 기본적으로 0xFD로 설정된 "no man 's land"바이트가 추가 된 디버그 모드에서 특수 힙을 사용합니다. 이러한 값을 덮어 쓰면 시각적으로 중단되도록하는 방법이 있습니까? 난 아무데도이 정보를 찾을 수 있으며 MSDN 당신은 때 디버그 모드에서 _CrtSetDbgFlag()를
그래서 나는 C에서 다음 열거 방법이 :이 찾을 수 enum enum_type GetInfo (int socket, unsigned char *data)
{
}
을하고 API에서 : 수신 데이터 포인터에 기록된다 나는이 같은 일을 해요 경우 * 데이터 .... 그래서 : unsigned char *data;
enum_type enum1;
enu