私はC++の初心者で、自分で実験するためにいくつかのコードを書こうとしています。
最近、デバッグできない問題に遭遇しました。
char acExpReason[128];
char acReason[] = "An error message is information displayed when an unexpected condition occurs, usually on a computer or other device. On modern operating systems.";
memcpy(acExpReason, acReason, sizeof(acExpReason));
std::string strExpReason(acExpReason);
VS2005 を使用して、デバッグするすべての行にブレークポイントを追加します。
2 行目のブレークポイントに到達すると、Autos の変数名と値の情報は次のようになります。
acReason 0x00f6f78c "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ" char [147]
acExpReason 0x00f6f828 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̺" char [128]
3 行目のブレークポイントに到達すると、Autos の変数名と値の情報は次のようになります。
acExpReason 0x00f6f828 "ÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌÌ̺" char [128]
" acReason 0x00f6f78c "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピュータまたはその他のデバイスで発生します。最新のオペレーティング システムでは." チャー [147]
4 行目のブレークポイントに到達すると、Autos の変数名と値の情報は次のようになります。
acExpReason 0x00f6f828 "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピューターまたはその他のデバイスで発生します。最新の ÌÌÌÌÌÌÌ̺ では" char [128]
" acReason 0x00f6f78c "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピュータまたはその他のデバイスで発生します。最新のオペレーティング システムでは." チャー [147]
strExpReason Bad Ptr
最後の行が実行された後、Autos の情報は次のようになります。
acExpReason 0x00f6f828 "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピューターまたはその他のデバイスで発生します。最新の ÌÌÌÌÌÌÌ̺ では" char [128]
" acReason 0x00f6f78c "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピュータまたはその他のデバイスで発生します。最新のオペレーティング システムでは." チャー [147]
strExpReason "エラー メッセージは、予期しない状況が発生したときに表示される情報で、通常はコンピューターまたはその他のデバイスで表示されます。最新の ÌÌÌÌÌÌÌ̺ では"
基本的に私のコードがやりたいことは、acReason[] に格納されている msg の完全な行を持つことです。また、固定長 (ここでは 128) の完全な msg のコピーがあります。
しかし、acExpReason と strExpReason (acExpReason の文字列バージョン) が、私が望まない奇妙な文字 "ÌÌÌÌÌÌÌ̺" で終わる理由がわかりません (この文字列を後で他の文字列と比較するために使用するため)。
memcpy、strcpy、および strncpy を使用してみましたが、それらはすべて、文字列の末尾に一連の奇妙な文字が含まれることになりました。
誰でも助けることができますか?よろしくお願いします。