char removeSpaces(char* str)
{
if (str == NULL)
return '\0';
int i = 0, j = 0;
while (str[i] != '\0')
{
while (str[i] == ' ')
i++;
str[j++] = str[i++];
}
str[j] = '\0';
return str[0];
}
コンパイラのコードを実行する際に問題はありません。私がビジュアルスタジオでそれを実行しようとしているとき、私は問題に直面しています。文字列を使用したスタックベースのバッファオーバーランの例外
テストケースは、緑のチェックで通過されるが、それは後に中止され、メッセージが表示されては:
The active Test Run was aborted because the execution process exited unexpectedly. To investigate further, enable local crash dumps either at the machine level or for process vstest.executionengine.x86.exe.
Iは、テストケースをデバッグし、それが示す:
未処理の例外をvstest.executionengine.x86.exeの0x627B1B69(spec.dll)にあります。スタッククッキーインストルメンテーションコードがスタックベースのバッファーオーバーランを検出しました。
この例外のハンドラがある場合は、プログラムを安全に続行することができます。
誰でもこれを説明できますか?
これはC++ではないC# – Jimbot
わからないですそれはあなたの問題に関連しているが、charSpace()を宣言してstr [0]を返している場合。それをchar *宣言してstrを返すのはなぜですか?その戻り値を使用するかどうかに応じて、問題が発生する可能性があります。 –
私は戻り値を使用していません。これはnullの場合のみ使用されます。 –