동료 중 일부가 오늘 C++ 코드에 문제가있었습니다. 그는 객체의 가상 메소드의 이상한 행동을 디버깅하고있었습니다. 메서드가 실행될 때마다 (디버그, Visual Studio 2005), 모든 것이 잘못되어 디버거가 해당 메서드에서 처리하지 않지만 개체의 소멸자에서 처리합니다. 또한 객체의 가상 테이블은 소멸자 만 나열하고 다른 방법은 없습니다.가상 메서드 혼란, 어떻게 그 원인을 찾을 수 있습니까?
이전에이 동작을 보지 못했으며 런타임 오류가 인쇄되어 ESP
레지스터에 대해 뭔가를 말했습니다. 나는 당신에게 올바른 오류 메시지를 줄 수 있었으면 좋겠지 만 지금은 정확하게 기억하지 못합니다.
어쨌든 혹시 혹시 혹시 혹시 혹시 본 적이 있으십니까? 무엇이 그러한 행동을 일으킬 수 있습니까? 어떻게 고정 될까요? 우리는 여러 번 프로젝트를 재구성하려고 시도했지만 IDE를 다시 시작한 것은 아무 것도 도움이되지 않았습니다. 또한 메모리가 양호한 상태인지 확인하기 위해 메서드 호출 전에 _CrtCheckMemory
함수를 사용했으며 true
(이는 의미)을 반환했습니다. 나는 더 이상 아이디어가 없다. 너?
printf("%d");
같은 라인아이디어가 있었지만 더 이상 올바르게 기억하지 못합니다. 인간의 기억에만 Windows 클립 보드와 같은 것이 있으면 나중에 사용하기 위해 사물을 쉽게 복사 할 수 있습니다. –
이것이 범인이라고는 생각되지 않습니다.하지만 어쨌든 생성자/소멸자의 가상 메서드를 호출하지 않았는지 확인하십시오 – Danra