QPixmap导致内存泄漏
QPixmap causes memory leak?
每次收到有效帧时,我都会从服务器流式传输MJPEG并更新QLabel的QPixmap。内存使用量随着时间的推移而增加,我不知道为什么。这是QPixmap的错误使用吗?
case StreamState::Streaming: {
int ind_start_bytes = m_buffer.indexOf("xffxd8");
int ind_end_bytes = m_buffer.indexOf("xffxd9");
if(ind_start_bytes != -1 && ind_end_bytes != -1) {
if(ind_start_bytes < ind_end_bytes){
QByteArray image_data = m_buffer.mid(ind_start_bytes, ind_end_bytes + 2);
m_buffer = m_buffer.mid(ind_end_bytes+2);
QPixmap pmap;
if(pmap.loadFromData(image_data, "JPEG")) {
setPixmap(pmap.scaled(pmap.size(), Qt::KeepAspectRatio));
}
}
}
}
以下是完整代码的github链接。相关代码为mjpegstreamer.cpp
。
是m_buffer在膨胀。我发布的代码使用带有fifo逻辑的帧。所以我更换了
int ind_start_bytes = m_buffer.indexOf("xffxd8");
int ind_end_bytes = m_buffer.indexOf("xffxd9");
带有
int ind_start_bytes = m_buffer.lastIndexOf("xffxd8");
int ind_end_bytes = m_buffer.lastIndexOf("xffxd9");
如果m_buffer
中存在多个帧,我们将消耗最后一个帧并删除左侧的帧。现在问题似乎已经解决了。这显然与QPixmap
无关。
相关文章:
- C++功能泄漏内存,我是C++新手,不确定如何解决
- 我的堆栈弹出式磁带的实现是否泄漏内存?
- 将 c++ 向量转换为字符 ** 而不会泄漏内存
- 析构函数 C++ 使泄漏内存
- 构造函数对象赋值是否泄漏内存
- corba :: orb_init泄漏内存
- Gmock泄漏内存
- 如何在不泄漏内存的情况下删除链接列表
- Visual C ODBC关闭记录集泄漏内存
- 为什么泄漏内存比在动态数组上执行 delete[] 慢
- OpenGL正在泄漏内存.哪个对象未释放
- 可以std ::退出泄漏内存
- uiautomation findall泄漏内存
- 为什么在此OpenCL代码中泄漏内存,为什么要泄漏内存
- pthread在完成后会泄漏内存
- win32 标准::线程泄漏内存
- 返回指向同一变量的指针是否会泄漏内存
- 使用clectType(new any_type())可能会泄漏内存泄漏
- Windows开发:如何确定我的应用程序是否正在泄漏内存
- WinHttp打开泄漏内存