我正在使用 ESP-32 控制器并希望std::shared_ptr使用 FreeRTOS 队列进行流式传输。但是,丢失了一个指针。可能问题在于这段代码:
{ // Начало функции
SoundControl ctrl;
…
ctrl.provider = sound; // +1 указатель (`sound` является константной ссылкой на std::shared_ptr)
…
xQueueSendToBack(queue, &ctrl, portMAX_DELAY); // ±0 указателей
} // Конец функции, -1 указатель
结果,排队的指针不被计数,它的析构函数将引用计数器减一。
如何解决这个问题(如果可能,继续使用 FreeRTOS 队列)?