news 2026/7/10 3:45:21

深究Qt中QByteArray的跨线程使用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
深究Qt中QByteArray的跨线程使用

非AI生成,觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。

一、QByteArray

        QByteArray 是一个“隐式共享(Copy-On-Write, COW)的字节容器”,它本身是一个值语义类型,真正的数据是存放在内存堆上的。

二、QByteArray的内部数据结构(简化)

struct Data {
    std::atomic<int> ref;  // 引用计数
    int size;              // 字节数
    int alloc;             // 容量
    char data[];        // 字节数组(真实数据)
};

三、QByteArray的隐式共享(Copy-On-Write, COW)

        1.浅拷贝(默认行为)

QByteArray a = "hello";
QByteArray b = a;

a ──┐
    ├──▶ Data { ref = 2, data = "hello" }
b ──┘

✅ 不拷贝数据

✅ 只增加引用计数

✅ 极快

        2.写时拷贝(COW)

b[0] = 'H';

a ──▶ Data { ref = 1, data = "hello" }
b ──▶ Data { ref = 1, data = "Hello" }

✅ 只在写操作时深拷贝

✅ 读操作永远共享

四、QByteArray的常用函数     

        1.构造函数

QByteArray(QByteArray &&other)
QByteArray(const QByteArray &other)  
QByteArray(int size, char ch) //构造一个大小为size的字节数组,每个字节都设置为字符ch。
QByteArray(const char *data, int size = -1)
QByteArray()

        2.查找相关函数

int indexOf(const QByteArray &ba, int from = 0) const
int indexOf(char ch, int from = 0) const
int indexOf(const char *str, int from = 0) const
int indexOf(const

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/10 3:39:34

GPT Live 来了,更像真人的语音搭子

GPT Live 已开始全量推送&#xff0c;手机和网页都能用&#xff0c;手机端记得先更新 App。以前的语音助手&#xff0c;很多时候像“对讲机”&#xff1a;你说完一句&#xff0c;它识别&#xff1b;它说完一句&#xff0c;你再说。中间不能随便插话&#xff0c;打断也很生硬&am…

作者头像 李华
网站建设 2026/7/10 3:39:01

Notepad++中的Markdown实时预览:告别编辑与预览分离的烦恼

Notepad中的Markdown实时预览&#xff1a;告别编辑与预览分离的烦恼 【免费下载链接】MarkdownViewerPlusPlus A Notepad Plugin to view a Markdown file rendered on-the-fly 项目地址: https://gitcode.com/gh_mirrors/ma/MarkdownViewerPlusPlus 还在为Markdown文档…

作者头像 李华
网站建设 2026/7/10 3:35:20

RTX 5070潮玩显卡:当GPU变成可编程电子画布

1. 项目概述&#xff1a;这不是一张显卡&#xff0c;而是一台可上机箱的街头艺术装置“iGame GeForce RTX 5070 Ultra OC 12GB”——这个型号名本身就是一个信号弹。它没出现在NVIDIA官方产品路线图里&#xff0c;没有在Geekbench或3DMark数据库中留下任何跑分记录&#xff0c;…

作者头像 李华
网站建设 2026/7/10 3:34:36

MinIO mc 企业级迁移脚本:实现 10TB 数据断点续传与实时进度监控

MinIO mc 企业级迁移脚本&#xff1a;实现 10TB 数据断点续传与实时进度监控1. 大规模数据迁移的工程化挑战在生产环境中执行10TB级别的MinIO数据迁移绝非简单的mc mirror命令就能解决。当数据量达到PB级时&#xff0c;工程师需要面对以下核心挑战&#xff1a;网络稳定性&#…

作者头像 李华