質問
私はこの非常に奇妙な行動が来ています:
以下のコードでは、MyLoggerへの呼び出しにコメントすると、すべてが正常に動作します。しかし、私がロギングのためのMyLoggerへの呼び出しを除外する場合、反復のみが1回行われ、以下と同様のコードを持つ他のテストクラスでは、MyLoggerに送信される冗長な情報が4回以上ループが行われます。
そこで、MyLoggerにメモリの問題があるかどうかを判断するために、Purify Toolで確認しました。見つけることができませんでした。 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