У меня есть объект, который читает из сокета непрерывно, как показано ниже:поведение C++ после разрушения
void CSocketReader::ReadComplete ()
{
messageProcessor->ResponseReceived (response);
read();
}
void CSocketReader::read()
{
socket.read(response);
}
Моя проблема, в зависимости от реакции и на протоколе, что я запустившего метод ResponseReceived может привести к удаление объекта CSocketReader. Когда метод ResponseReceived возвращает объект, на который указывает этот указатель, был бы удален (но по какой-то причине мне не известен, этот указатель не является NULL даже после его удаления !!). Затем выполняется метод чтения, и программа выходит из строя в режиме чтения. Как я могу надежно обнаружить, что метод, который выполнялся на объекте, был удален.
Пожалуйста, помогите.
определение функции все еще существует, даже после удаления объекта. вызов функции должен быть закодирован на языке ассемблера. , что объясняет, почему вызов функции все еще выполняется. правильно. –
Я добавил еще один комментарий к концу ответа Йеспера. – ChrisW