나는 내가 이해할 수없는 매우 이상한 문제가있다.한 함수에서 다른 함수로 전달 된 값이 변경됩니다 ... 이유를 알아낼 수 없습니까?
//below are the values being passed
//long numTreePeriods = 80
//double length = 0.23013698630136986
TTimeLineInfo* tlInfo = GtoTimeLineInfoNew((long)ceil(numTreePeriods/length), /*ppy*/
0L,
1,
FALSE);
지금 여기 위라는 GtoTimeLineInfoNew 함수의 서명은 다음과 같습니다 :
__declspec(dllexport) TTimeLineInfo* GtoTimeLineInfoNew
(long minPPY, /* (I) Min # ppy before switchDate */
TDate switchDate, /* (I) If 0, ignore ppy2; only use minPPY*/
long minPPY2, /* (I) Min # ppy after switchDate */
TBoolean wholeDayTPs);
내 코드를 디버깅 및 함수에 단계 값이 I 위의 규정에
이
는 C 코드 얻을 수 :minPPY = -1636178017
????? 이러한 유형의 행동을 일으킬 수있는 요인은 무엇입니까?
정확하게 C 코드는 DLL입니다. C++/CLI로 래핑합니다. 그럼에도 불구하고 문제는 그 것으로부터 독립적으로 보입니다 ....
어디에서이 값을 관찰하기 위해 중단 점을 설정 했습니까? 기능의 몸 안에? –
함수에서 실제로 minPPY로 무엇을합니까? – FloppyDisk
코드의 첫 번째 부분에서 함수 호출에 중단 점을 넣은 다음 몇 줄을 건너 뛰어 값이 표시되는지 확인합니다. 이 함수는 minPPY가 복사되는 필드를 포함하는 TTimeLineInfo 데이터 구조를 초기화하고 ... ds ....를 반환합니다. 문제는 잘못된 값이 필드에 복사된다는 것입니다 ... – nche