Qt4.5:隐式共享QImage:类似.bits()的方法总是复制(文档不清晰)

时间:2009-09-25 06:43:19

标签: c++ qt memory-management qt4

我正在编写一个必须处理大型QImage的Qt应用程序。 QImage使用隐式共享,这意味着它引用计数内部数据指针。每当refcount是> 1对象计为“共享”,任何甚至只有潜在的数据修改调用都会发出图像数据的深层副本。

简而言之:我不希望发生深层复制。

我进行了一些调用,如setPixel(),bits()等可以触发副本的调用。文档有时会读取,好像某些调用总是触发深层复制(分离调用),即使我尽力将refcount保持为1。 像这儿: QImage::setPixel()

所以我想知道:

  1. 该文档是否只是笨拙地制定,这些调用只能可靠地复制共享对象(如refcount> 1)?
  2. 出于调试原因等,我可以向对象询问当前的refcount是什么吗?
  3. 我可以强制Qt不要隐式地共享特定的对象/实例(< - 这里我的教育猜测是“不”)

1 个答案:

答案 0 :(得分:1)

  1. 可以修改共享实例的操作将分离。 setPixel分离。
  2. 尝试执行return d && d->ref == 1;的QImage :: isDetached()。通过使用调试器,您可以获得实际的引用计数。
  3. 除了通过引用/共享指针号
  4. 之外