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

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

我的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*)>typesstd::map<E_COMMAND, bool (Server::*)(ANetwork::t_frame, void*)>

将cmd添加到_commands [type]可以在Linux(ubuntu和opensuse)上正常工作,但在Windows 10上使用VS Entreprise 2015发出Violation Access Memory。

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