Когда удаляется объект лямбда-функции?
Программа периодически отсылает запросы по последовательному интерфейсу. Код отправки запроса и приёма ответа выглядит так:
QModbusReply *reply = device->sendReadRequest(dataUnit, trans->getAddress());
QObject::connect(reply, &QModbusReply::finished, [this, reply](){
//Обработка ответа
});
Этот код выполняется с заданной периодичностью в течение всего времени, пока программа запущена. Поэтому, теоретически, объект лямбда-функции должен создаваться бесконечное количество раз. Так вот когда он удаляется и удаляется ли вообще? Безопасно ли создавать лямбда-функции таким образом?
Ответы (1 шт):
Автор решения: Rafael F.
→ Ссылка
Лямбда будет удалена, когда будет удален объект reply.
Если вы перейдете к соответствующему определению connect, станет понятно, что в данном случае в качестве объекта получающего сигнал будет выступать этот же объект.
