gpt4 book ai didi

c++ - Qt4.5 : Implicitly shared QImage: are methods like . bits() 总是复制(文档不清晰)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:37:22 25 4
gpt4 key购买 nike

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

简而言之:我不希望发生深拷贝。

我调用了很多可以触发复制的调用,例如 setPixel()、bits() 等。文档有时读起来好像某些调用总是触发深度复制(分离调用),即使我尽最大努力将引用计数保持在 1。像这儿: QImage::setPixel()

所以我想知道:

  1. 文档的表述是否有点笨拙,这些调用是否可靠地仅复制共享对象(如在 refcount > 1 中)?
  2. 出于调试等原因,我可以询问对象当前的引用计数是多少吗?
  3. 我可以强制 Qt 不隐式共享特定对象/实例吗(<- 我的有根据的猜测是“否”)

最佳答案

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

关于c++ - Qt4.5 : Implicitly shared QImage: are methods like . bits() 总是复制(文档不清晰),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1475782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com