문제

나는 std :: vector <> :: const_iterator를 사용하려고 노력하고 있으며 '액세스 위반'충돌을받습니다. STD :: 벡터 코드가 자체 내부를 사용할 때 충돌하는 것 같습니다. First_ 그리고 Last_ 포인터. 아마도 이것은 알려진 버그 일 것입니다. 누군가가 올바른 해결 방법을 지적 할 수 있기를 바랍니다. 충돌 기능이 외부 라이브러리에서 호출되는 것이 관련이 있습니까?

const Thing const*  AClass::findThing (const std::string& label) const
{
    //ThingList_.begin() blows up at run time.  Compiles fine.
    for (std::vector<Thing*>::const_iterator it = ThingList_.begin(); it != ThingList_.end(); ++it) {
        //Irrelevant.
    }
    return 0;
}

단순히 전화 ThingList_.size() 또한 충돌합니다.

중요한 경우 SP6입니다.

도움이 되었습니까?

해결책

외부 라이브러리 경계에서 C ++ 객체를 통과하는 경우 모든 라이브러리가 동일한 런타임 라이브러리 (특히 동일한 힙 할당 자)를 사용하고 있는지 확인해야합니다. 실제로 이것은 모든 라이브러리가 MSVCRT의 DLL 버전에 연결되어야 함을 의미합니다.

다른 팁

STD :: 벡터가 아닌 코드의 버그입니다. 이 코드는 너무 많은 프로젝트를 통해 사용하여 버그를 쉽게 재현하기 쉽습니다.

아마도 thniglist_ 변수가 어떤 식 으로든 손상되었다는 것입니다. 기본 배열이 직접 및/또는 수정 되었습니까?

나는 그것이 당신의 코드에있을 것이라는 것에 동의합니다. 절대로, 당신은 당신의 stl libs가 최신 상태인지 확인해야합니다.

그만큼 Dinkumware 사이트에는 필요한 패치 파일이 있습니다.

안전하기 위해 업데이트해야합니다

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top