std::map::operator[]违规访问windows上的内存

std::map::operator[] Violation access memory on windows

本文关键字:windows 访问 内存 map operator std      更新时间:2023-10-16

我的一个项目遇到了一个大问题。这个项目是跨平台的。它在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);

最后是我的指挥官:

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

_命令是std::map<E_COMMAND, bool (Server::*)(ANetwork::t_frame, void*)> 的类型

将cmd添加到_commands[type]在Linux(ubuntu和opensuse)上运行良好,但在带有VS Entreprise 2015的Windows 10上会引发违规访问内存。

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