Visual Studio 2012 (표준 C++ 및/clr 지원 없음)를 사용하여 C++에서 시뮬레이션 프로젝트를 작성 중이며 다음 문제가 발생합니다.참조로 전달한 후 문자열이 변경됨
theClassObject->Method("12345")
클래스에있어서의 정의는 : 코드에 어딘가에 I 참조하여 문자열을 전달
TheClass::Method(const std::string& STR) {..}
그리고 그것이 가지고 디버깅 동안 STR 값을 확인할 때 예를 들어 "~ # .a12345"와 같이 앞에 4 바이트가 더 늘어나고이 4 바이트만큼 문자열의 길이가 늘어납니다. 다른 유사한 방법을 사용하는 코드의 다른 위치에서는 이것이 발생하지 않습니다.
프로젝트에 대한 일부 컴파일러 옵션이 누락되었거나 놓친 다른 이유가 있습니까?
필요한 모든 정보를 제공했는지 확신 할 수 없지만 필요할 경우 할 수 있습니다.
미리 감사드립니다.
이렇게해서는 안됩니다. 게시 한 내용부터 무엇이 잘못되었는지를 추측하는 것은 거의 불가능합니다. 문제를 여전히 편집 가능하고 게시 할 수있는 하위 집합으로 줄일 수 있습니까? – nvoigt
당신은 const 참조로 보내므로, Method() 함수 내에서 문자열을 변경할 수 없습니다. 다른 곳에서 변경되고 있습니다. 샘플 작업 코드를 게시 할 수 있습니까? (SSCCE) – vathsa
이상한 ... const 참조를 변경하고 있습니다! 'TheClass :: Method (const std :: string & STR)'의 구현을 게시하십시오. 아마도 잘못된 값을 보여주는 디버그 구성 일 것입니다. –