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

Tim*_* MB 4 c++ qt memory-leaks qimage

Qt类QImage有两个版本的bits()函数,它返回一个指向底层图像数据的指针.一个是const,另一个不是.以下是非const版本的文档:

返回指向第一个像素数据的指针.这相当于scanLine(0).

请注意,QImage使用隐式数据共享.此函数执行共享像素数据的深层副本,从而确保此QImage是唯一使用当前返回值的QImage.

返回类型是uchar*.

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

Dan*_*urn 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;
}
Run Code Online (Sandbox Code Playgroud)