C++에서 클래스를 선택하여 가상 상속을 사용하고 있습니다. 현재 파괴되고있다. Visual Studio에서 실행하면 온라인 컴파일러에서 제대로 컴파일 된 것처럼 보이지만 충돌이 발생합니다.Visual C++에서 가상 상속 계층 구조와 함께 사용하면 배치가 중단됨
필자는 순수 가상 기본 클래스를 가지고 있습니다.이 가상 클래스는 구현에 의해 사실상 상속됩니다. 그런 다음 구현 클래스를 상속하는 세 번째 클래스가 있습니다. 메모리 생성 및 해제를위한 내부 시스템을 사용하고 있습니다. 후드 아래 정렬 된 malloc으로 새로운 배치를 사용하고 있습니다. 그런 다음 자유를 사용하여 메모리를 비 웁니다. 나는이 최소한의 예를 창조했다. 내가하는 일이 정확히는 아니지만 비슷한 문제가있는 것 같습니다.
내가 말했듯이이 예제는 온라인 컴파일러에서 "완료"를 인쇄합니다. 그러나 Visual Studio 2015에서는 박쥐 개체에서 자유롭게 충돌하는 것으로 보입니다. 나는 가상의 상속과 새로운 배치에 상당히 익숙하다. 누구든지 문제가 보이나요?
@Barry http://cpp.sh/2vd4t는 Visual Studio에서 붙여 넣기에 문제가 있습니다. 다음은 사용할 수있는 온라인 웹 사이트입니다 : http://webcompiler.cloudapp.net/. 거의 모든 내 질문에이 답변을 많이 볼 수 있습니다. 아마 내가 누락 된 부분을 지적하여 미래에 향상시킬 수 있을까요? – marsh
코드에 대한 링크 게시는 권장하지 않습니다. 질문 자체에 코드를 게시하십시오. –
@jeff 그는 배치 새로운 구문을 사용하고 있습니다. 그래서 malloc은 단지 원시 메모리를 할당합니다; new는 그것을 C++ 객체로 초기화합니다. 그렇다면 그는 명시 적으로 소멸자를 호출하고 무료로 전화하고 있습니다. 이것은 합법적입니다. 파생 클래스는 하나의 클래스에서 상속받을 때 항상 가상 소멸자를 갖습니다. –