首页 > 解决方案 > 指针无效?

问题描述

我遇到了指针/对象无效的问题。

我有一个持有 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 次调用有效,然后失效。

为什么会这样?

标签: c++pointersvectorstdvectornullptr

解决方案


推荐阅读