레퍼런스 매개변수 메모리 깨짐 현상

yangkuisuk의 이미지

kuisuk 번호: 874465 추천:0 / 읽음:0
다음과 같은 함수를 만들었습니다.


void func(object& o)
 
{
 
    .........
}

그리고 다음과 같이 함수를 호출 합니다.


object o;
 
o.setX; // 객체에 값 할당
 
..............
 
func(o);

그리고 나서 디버깅으로 값을 확인해보면

함수에 호출 되기전에 o의 값은 정상적인데 함수에 들어가서


void func(object& o)<------------이곳을 브레이크 포인트로 잡고 o의 값을 확인해보면 값이 깨져 있습니다.
 
{
 
.........
}

매개변수를 레퍼런스 타입으로 넘기기 때문에 복사생성자는 만들지 않았습니다.

혹시나 해서 만들어도 마찬가지이구요...

무슨 원인때문에 이런 현상이 생길까요? 제 환경은 windows7 개발툴은 Visual Studio2005 입니다. 32비트 기반입니다.

혹시 아시는 분들 있나요? 알려주시면 감사하겠습니다.

익명 사용자의 이미지

func()내에서 printf 로 값을 한번 찍어보세요.

winner의 이미지

C++라면 release mode 에서 최적화 때문에 debugger로 관찰하기가 애매할 수 있긴 합니다만...
Debug 관련 출력을 해보시는게 좋을 것 같네요.
Windows API 는 OutputDebugString, C#은 Debug가 있는 것으로 압니다.