После этой строки:
vectClientSocket.erase(socketIterator);
socketIterator
- недопустимый итератор, потому что там, где он использовался для указания, было стерто. Между этой строкой и следующей итерацией в вашем цикле вы никогда не дадите ей правильное значение, поэтому эта строка в следующей итерации является недопустимым разыменованием.
SOCKET clientSocket=*socketIterator;
Как указывает Саймон, даже до этого условие цикла socketIterator<vectClientSocket.end()
также будет вызывать неопределенное поведение, поскольку socketIterator
больше не является действительным итератором для vectClientSocket
.