c++ - 如何管理已通过信号槽传递的对象的删除?

标签 c++ multithreading qt memory-management signals-slots

我刚刚使用 videoInput 库和 OpenCV 向我的应用程序添加了网络摄像头支持。

视频流在 QThread(生产者)中并发出信号,为我的应用程序发送 QImage* 以更新需要它的图形项目。

它的内存管理方面是,一旦槽用完它,我就会删除消费者槽中的 QImage*。现在的问题是我希望不止一个对象接受该 QImage* 数据。

在这种情况下,我现在是否必须跟踪数据的所有消费者(具有引用计数),然后在所有消费者完成后删除 QImage*(很可能在生产者线程中)?

最佳答案

使用智能指针应该为您完成大部分工作:QSharedPointer

关于c++ - 如何管理已通过信号槽传递的对象的删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4897383/

相关文章:

c++ - 如何在Linux上使用Ptrace打印C++其他进程的调用栈

c++ - 从二进制文件中读取 unsigned long

ruby-on-rails - session 可以在Heroku上与多个Web dynos一起使用吗?

Python 队列的使用适用于线程,但(显然)不适用于多处理

python - 使用 python 将 Qt 与 Windows 7 任务栏集成?

qt - 绑定(bind)调用顺序

qt - QWidget::mapToGlobal() 当小部件不可见时

c++ - 使用多线程处理 SIGTERM 的正确方法

c++ - 线程安全的 Hook 函数

android - android SQLite 的数据库队列