Visual Studio 2010 で Win32 コンソール アプリケーションを作成しています。
char*
パラメーターとして2 つを取る 1 つの関数を考えてみましょう。
以下は関数のプロトタイプです。
void WriteApplicationFile(char *mappname,char* MessageString)
{
//Do some File related stuffs.
}
現在、次の呼び出しは完全に機能しています。
WriteApplicationFile("FirstOne", "Append Me");
WriteApplicationFile("FirstOne", "Append Another");
しかし、文字配列で同じことをしようとすると、アサーションが発生し、アセンブリに投げ込まれます。
次のコードは機能しません。
char * LocalBuffer = new char[100];
sprintf(LocalBuffer,"Number of jobs in Queue %d",JobsCount);
WriteApplicationFile("SAAZshadowProtect",LocalBuffer);
free(LocalBuffer);
LocalBuffer = NULL;
//Work fine.
//...
LocalBuffer = new char[100];
sprintf(LocalBuffer,"Log file name %s",LogFileCharName);
WriteApplicationFile("SAAZshadowProtect",LocalBuffer);
free(LocalBuffer); // I got assertion here..
LocalBuffer = NULL;
どこが間違っていますか?
もう 1 つは、すべてのアサーションとバグを try-catch ブロックで処理したいということです。どうすればいいですか?