質問

私はこの非常に奇妙な行動が来ています:

以下のコードでは、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);

そして、何かが変わったかどうかを確認します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top