Tim*_* MB 4 c++ qt memory-leaks qimage
Qt类QImage有两个版本的bits()函数,它返回一个指向底层图像数据的指针.一个是const,另一个不是.以下是非const版本的文档:
返回指向第一个像素数据的指针.这相当于scanLine(0).
请注意,QImage使用隐式数据共享.此函数执行共享像素数据的深层副本,从而确保此QImage是唯一使用当前返回值的QImage.
返回类型是uchar*.
这是否意味着delete当我完成它以避免内存泄漏时,我负责调用此指针?
不,它只是意味着非const版本导致QImage与共享相同数据的任何其他实例分离,因为您可能正在修改它.它仍然保持所有权.可以肯定的是,实施(来自Qt 4.7.2):
uchar *QImage::bits()
{
if (!d)
return 0;
detach();
// In case detach ran out of memory...
if (!d)
return 0;
return d->data;
}
Run Code Online (Sandbox Code Playgroud)