我负责在QImage :: bits()函数提供的指针上调用delete吗?

时间:2013-02-14 15:57:18

标签: c++ qt memory-leaks qimage

Qt类QImage有两个版本的bits()函数,它返回一个指向底层图像数据的指针。一个是const,另一个不是。对于非const版本,这里是the documentation

  

返回指向第一个像素数据的指针。这相当于   扫描线(0)。

     

请注意,QImage使用隐式数据共享。此功能执行   共享像素数据的深拷贝,从而确保了这个QImage   唯一使用当前返回值的人。

返回类型为uchar*

这是否意味着当我完成它以避免内存泄漏时,我负责在此指针上调用delete

1 个答案:

答案 0 :(得分:6)

不,这只是意味着非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;
}