を使用して作成したchar配列でアクセス違反が発生しnew
ます。
DispatchCommand(char* cmdStr)
{
// Dispatch
for(int i = 0; i < sizeof(_lpCommands); i++)
{
const int len = strlen(_lpCommands[i].szCommand);
char* cmdblip = new char[len + 1];
memcpy(&cmdblip, cmdStr, len);
cmdblip[len] = '\0'; // Access Violation
if(strcmp(cmdblip, _lpCommands[i].szCommand) == 0)
{
if(strlen(cmdStr) > strlen(_lpCommands[i].szCommand))
(*_lpCommands[i].cbCallback)(&cmdStr[strlen(_lpCommands[i].szCommand)]);
else
(*_lpCommands[i].cbCallback)("");
delete cmdblip;
return;
}
delete cmdblip;
}
// Error and return
*Out::ServerInfo<<"Command not found!"<<ENDL;
}
_lpCommandsは、Command
構造体の配列です。
struct Command
{
char* szCommand;
CommandCallback cbCallback;
};
生成されるエラーメッセージは次のとおりです。
Program.exeの0x012219cfで未処理の例外:0xC0000005:アクセス違反の書き込み場所0x66647366。
これは、を使用していた同様のコードの書き直しでありmemcmp
、結果として、を実行せずにアクセス違反も発生しましたmemcpy
。
何が得られますか?