c++ - 指针无效?
问题描述
我遇到了指针/对象无效的问题。
我有一个持有 std::vector< MyStruct* > 的类。
它们被存储在直接访问 std::vector 的消息处理函数中。函数如下:(Socket::Server* 是给每个接收线程的 thisptr,然后传递给这个函数)
static void OnUpdateInGameState( Socket::Server* Server, int Client, const char* Data ) {
Messages::MessageUpdateInGameState Message( Data );
for ( auto GameState : Server->m_ClientGameState ) {
if ( !GameState )
continue;
if ( GameState->Client == Client ) {
GameState->Message.InGame = Message.message( ).InGame;
snprintf( GameState->Message.Server, sizeof( Message.message( ).Server ), Message.message( ).Server );
return;
}
}
//No such object found, create it
Server->m_ClientGameState.push_back( new InGameState_t( Client, Message.message( ) ) );
}
我尝试过使用智能指针和其他分配内存的方法。所有这些都导致指针对 1-5 次调用有效,然后失效。
为什么会这样?
解决方案
推荐阅读
- javascript - 在Ext JS中捕获网格行的长按或点击保持事件
- php - 如何将存储在一个页面中的href链接中的值发布到下一个php页面
- c++ - 从 ffmpeg 1.1 升级到 3.3 后没有帧解码
- ios - 在 wifi 网络 iOS 中扫描连接的设备
- docusignapi - Docusign 标签值被错误地应用于其他标签
- javascript - 如何将序列化数组发送到 php 文档?
- c# - 从文件共享中读取图像路径并存储在表存储中 azure
- linux - ImageMagick 没有解码委托
- mysql - SQL 查询没有值
- telegram - 用电报机器人显示表格?