2010-08-21 1 views

답변

2

각 Visual Studio 버전에는 C 및/또는 C++ 런타임의 업데이트 된 버전과 다른 버전이 포함되어 있습니다. This msdn page (아래 "What problems exist ...")는 문제가 무엇인지 아주 잘 설명합니다. msvcrt.dll <에 대한 설명 -> msvcrt10.dll은 모든 msvcrtXX.dll에 유효합니다.

주목할만한 문제는 없어야하지만 적절한 버전의 VS에 이진 버전을 사용하는 것이 좋습니다.

2

일반적으로 다른 버전의 Visual Studio에서 생성 된 코드는 다른 버전의 런타임 라이브러리를 사용합니다.

라이브러리 디자인 방법에 따라 여러 버전의 할당 및 할당 해제 기능이 있고 한 런타임 라이브러리에 할당 된 포인터를 전달할 때 힙 오류가 발생하기 쉽기 때문에 문제가 발생할 수 있습니다. 다른 것에서 할당 해제 함수. 런타임 라이브러리가 동적으로 또는 정적으로 링크되는지 여부에 관계없이이 문제가 발생할 수 있습니다.

좋은 라이브러리 설계로는이 문제를 피할 수 있지만 같은 프로그램에서 여러 개의 C 힙을 사용하는 것은 여전히 ​​비효율적입니다. 및 rand, 로케일 및 strtok과 같은 추악한 기존 기능과 같은 정적으로 유지되는 정보에 의존하는 런타임 라이브러리 기능에는 다른 잠재적 인 문제가 있습니다.

Visual Studio의 여러 버전을 연결할 수있는 경우에도 대개 훨씬 안전하지 않은 경우가 많습니다.

관련 문제