При создании объекта с помощью оператора new не срабатывает деструктор

79
16 января 2022, 23:30

В этом коде, я присваиваю указателю current адрес в памяти, на который указывает указатель, который возвращает функция listen_port, и передаю current в функцию, где он в последствии используется. Проблема в том, что когда цикл делает следующую итерацию у объекта, на который указывает current не вызывается деструктор. Как можно исправить эту проблему ?

for(;;)
{
client *current = client::listen_port(cone.get_socket());
httpHandler worker(current);
worker.handle();
}
Answer 1
for(;;)
{
    client *current = client::listen_port(cone.get_socket());
    httpHandler worker(current);
    worker.handle();
    delete current;
}

Но это работает, если client::listen_port создает client* через new, и если worker.handle(); не вызывает другой поток, в который оттдает указатель, и если сам httpHandler в своем деструкторе не освобождает указатель.

READ ALSO
Помогите найти ошибку . С++ . Строки

Помогите найти ошибку . С++ . Строки

Задание: С клавиатуры вводится строка символов состоящая из нескольких слов, необходимо вычислить и вывести на экран количество символов...

63
не работает seekg

не работает seekg

Нужно пройтись по файлу 2 раза, чтоб узнать его размер, а потом прочитатьПроблема в том, что seekg(0) не сбрасывает указатель на элемент файла...

75
(C++) Разделить строку на несколько слов

(C++) Разделить строку на несколько слов

Как возможно реализовать разделение строки без использования стандартных библиотек C++?

62
с++: прекратить выполнение всех потоков

с++: прекратить выполнение всех потоков

Формирую задачу, которая будет выполняться в нескольких потоках с помощью stl следующим образом:

79