У меня проблема с тем, что мои указатели / объекты были признаны недействительными.
У меня есть класс, который содержит std :: vector .
Они находятсяхранится в функции обработчика сообщений, которая напрямую получает доступ к 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 вызовов, а затем был признан недействительным.
Почему это происходит?