4

Qt 类QImage有两个版本的bits()函数,它们返回一个指向底层图像数据的指针。一个是 const,另一个不是。这是非常量版本的文档

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

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

返回类型是uchar*.

这是否意味着我有责任delete在完成此指针后调用它以避免内存泄漏?

4

1 回答 1

6

不,这只是意味着非常量版本会导致 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;
}
于 2013-02-14T16:06:21.263 回答