문제
나는이 매우 이상한 행동이 다가오고 있습니다.
아래 코드에서 : MyLogger에 전화를 댓글을 달면 Stempnr을 토큰 화하고 4 개의 토큰이 인쇄되는 모든 것이 잘 작동합니다. 그러나 내가 로깅을 위해 MyLogger로 전화를 걸면 반복 만 한 번만 발생하고 아래와 비슷한 코드를 가진 다른 테스트 클래스에서는 MyLogger에 중복 정보가 전송되는 4 번 이상의 루핑이 발생합니다.
그래서 MyLogger에 메모리 문제가 있는지 확인하기 위해 Purify 도구를 확인했습니다. 아무것도 찾을 수 없었습니다. MyLogger는 vaargs를 사용하여 args 및 vfprintf 호출을 추출합니다.
이 코드를 추가로 디버그하는 방법을 잘 모르겠습니다. 모든 지침에 감사드립니다!.
char sTempNr[41] = "1129Z13589.2.9.10";
char *sTempStr;
sTempStr = NULL;
sTempStr = strtok(sTempNr,".");
while (sTempStr)
{
printf("in in TempStr[%s]\n",sTempStr);
//MyLogger("write","","Temp String[%s]",sTempStr);
sTempStr = strtok(NULL,".");
}
해결책
strtok()
아마도 일부 정적 데이터를 내부에 보관할 수 있습니다 MyLogger
전화 strtok()
, 직간접 적으로.
바꾸다 strtok()
~와 함께 strtok_r()
(재진입 버전 strtok()
)이 문제를 해결하기 위해.
다른 팁
로거는 Strtok에게 전화합니까?
MyLogger는 Strtok도 사용하고 있습니까? Strtok은 상태가 아닙니다.
mylogger가 stempstr에서 문자열을 손상시키는 것처럼 들립니다. MyLogger 호출 후 다시 인쇄 해보십시오. 예를 들어
printf("in in TempStr[%s]\n",sTempStr);
MyLogger("write","","Temp String[%s]",sTempStr);
printf("in in TempStr[%s]\n",sTempStr);
그리고 어떤 것이 바뀌 었는지 확인하십시오
제휴하지 않습니다 StackOverflow