std :: map :: operator []在Windows上违反访问内存

时间:2015-12-08 15:41:51

标签: c++ linux windows visual-studio

我的一个项目遇到了大问题。这个项目是跨平台的。 它在Linux上工作正常,但在Windows上我填写地图时有一个Violation访问内存。

我的main.cpp看起来像这样:

Server *s = new Server;

s->init(4253);

SERVER.CPP:

this->_commandManager.addFunction(C_CREATEROOM, &Server::createRoom);
this->_commandManager.addFunction(C_JOINROOM, &Server::joinRoom);
this->_commandManager.addFunction(C_LAUNCHGAME, &Server::createGame);

最后我的CommandManager:

bool CommandManager::addFunction(E_COMMAND type, bool (Server::*cmd)(ANetwork::t_frame frame, void *data))
{
  _commands[type] = cmd;

  return true;
}

_commands是std::map<E_COMMAND, bool (Server::*)(ANetwork::t_frame, void*)>

的类型

将cmd添加到_commands [type]在Linux上运行正常(ubuntu和opensuse),但在Windows 10上使用VS Entreprise 2015抛出违规访问内存。

1 个答案:

答案 0 :(得分:1)

如果您使用的是VS,请尝试在编译器中使用/ vmg选项。