Задать вопрос

Как освобождать динамическую память, которую используют два потока?

В главном потоке создается динамический массив. Затем создается отсоединенный поток, который использует этот динамический массив.

int *arr[N];
...
thread thr(Daughter);
thr.detach(); 
...
delete[] arr;

Дочерний поток периодически проверяет флаг, который может установить основной поток. Когда флаг установлен, дочерний поток завершает работу.

Если главный поток решит завершить свою работу и работу дочернего потока, установит флаг завершения дочернего поток и тут же начнет освобождать память, то может произойти ошибка, так как дочерний поток не сразу останавливается и может обратиться к освобожденной памяти.

Как и когда освобождать память?

Надо заметить, что дочерний поток сам не может освобождать память, поскольку она может может быть востребована в главном потоке и после завершения дочернего.
  • Вопрос задан
  • 341 просмотр
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
  • Skillfactory
    DevOps-инженер
    6 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик
    10 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
Тут не С++, но суть должна быть понятна.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы