zoukankan      html  css  js  c++  java
  • Qt : 隐式数据共享(copy on write)

    copy on write 意思当内容有变动的时候,才对容器中的数据结构进行复制。否则仅作共享。

    QT许多类中使用了隐式数据共享技术,来最大化资源利用率和最小化拷贝时的资源消耗。 在数据传递时,其实只传递了数据的指针,而只有函数发生需要写入的情况时,数据才会拷贝。

    说到拷贝不得不说的两种类型:深拷贝与浅拷贝,深拷贝需要拷贝一个类中所有的数据成员,并分配相应的内存,即构造一个新对象。对于cpu和内存都是昂贵的。浅拷贝则只拷贝了相应的对象的指针。隐式共享实质是基于浅拷贝与引用计数而产生的。

    具有隐式数据共享的类包含一个共享数据块指针。这个数据块包含了数据本身及数据的引用计数。当共享对象被创建时,引用计数被置为1,当其发生copy操作时,引用计数加1。当对象不再引用时引用计数减1。当引用计数为0时,共享数据被删除。

    隐式数据共享的好处,程序不需要不必要的重复数据,减少数据拷贝的需求。重复数据的代价是降低内存使用率。通过数据共享,对象可以简单地作为值来传递以及从函数中返回。

    隐式数据共享是在底层完成的,程序人员无需关心。我们可以使用QSharedData 和QSharedDataPointer类实现自己的隐式数据共享类。




  • 相关阅读:
    命令
    碎片知识
    驱动问题
    网络基础知识普及
    面向设计大作业——公司餐厅
    面向对象--购物车
    OO之接口-DAO模式代码阅读及应用
    有理数类的定义
    图知识点总结
    Java课程设计总结
  • 原文地址:https://www.cnblogs.com/chengkeke/p/5417385.html
Copyright © 2011-2022 走看看