나는 지금까지 작업 한 적이있는 가장 큰 프로젝트에 참여하고 있으며, 이런 식으로 디버깅을 해본 적이 없어서 어디서부터 시작해야할지 모르겠다. .내 프로그램에서 직접 사용하지 않는 memcpy의 가끔 충돌
충돌에 대한 정보 : Visual Studio를 사용하고 있으며 디버거는 완전히 쓸모가 없습니다. 그것이 나에게주는 유일한 정보는 "memcpy"호출 중에 일어나는 것처럼 보입니다. 호출 스택은 memcpy 함수를 제외하고는 완전히 비어 있으며 로컬 변수는 나열되지만 그 중 하나에 대한 값은 없습니다.
모든 컴퓨터에서 가끔 발생합니다.
어떤 알려진 조건에서도 항상 발생하는 것은 아니지만 몇 가지 조건에서만 발생합니다. 특히 그것은 직접적인 원인은 아니지만 특정 유형의 객체가 파괴 될 때만 발생하며 파괴 과정을 조사하는 것이 도움이되지 않았습니다.
프로젝트에 대해 조금 더 : 정적으로 연결된 SFML 2.0을 사용하는 게임입니다. 내 코드에서 memcpy를 아무 곳이나 호출하지 않습니다.
몇 가지 질문 : 어디에서 memcpy 호출이 올 수 있습니까? SFML 또는 다른 곳입니까? 어떻게 디버거가 작동하지 않을 때 Visual Studio를 사용하여 충돌에 대한 자세한 정보를 얻을 수 있습니까?
코드에서 마지막으로 메모리 누수 감지기가 실행 된시기는 언제입니까? 코드에서 정적 분석기를 실행합니까? – Surt
힙 손상과 같은 소리입니다. 에러는'memcpy' 호출에서 거의 확실합니다. 오래 전에 일어 났을 수도 있습니다. –
'memcpy()'는 아마 문제를 확인하는 것일뿐입니다. 주요 버퍼 오버플로가있는 것처럼 들리므로 스택의 대부분이 무언가 (아마도이 'memcpy()')에 의해 쓰레기로 쓰여지게됩니다. 이것은 아마 당신이 스택에 배열을 가지고 있다는 것을 의미 할 것이다. (N 요소를 말한다.) 그러나 당신의 코드는 어떤 식 으로든 M 요소가 배열에 M> N이라는 것을 추측하고있다. 그리고 이것은 호출 전에 유용한 정보를 파기하게된다. 'memcpy()'에 추가하십시오. 디버거는 휴지통 스택 정보를 사용하려고하기 때문에 이미 손상이 발생했기 때문에 도움이 될 수 없습니다. –