非AI生成,觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。一、QByteArrayQByteArray 是一个“隐式共享(Copy-On-Write, COW)的字节容器”,它本身是一个值语义类型,真正的数据是存放在内存堆上的。二、QByteArray的内部数据结构(简化)struct Data { std::atomicint 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) constint indexOf(char ch, int from = 0) constint indexOf(const char *str, int from = 0) constint indexOf(const
深究Qt中QByteArray的跨线程使用
非AI生成,觉得有用,就请您帮忙点赞转发收藏吧,您的鼓励是我创作的动力,多谢看官。一、QByteArrayQByteArray 是一个“隐式共享(Copy-On-Write, COW)的字节容器”,它本身是一个值语义类型,真正的数据是存放在内存堆上的。二、QByteArray的内部数据结构(简化)struct Data { std::atomicint 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) constint indexOf(char ch, int from = 0) constint indexOf(const char *str, int from = 0) constint indexOf(const