我刚刚使用创建的 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
.
是什么赋予了?