dedecms 网站导航,建设自己网站的流程图,福州发布最新通报,h5网站页面个人主页#xff1a;Lei宝啊
愿所有美好如期而遇 说明
博主是x86平台#xff0c;所以下面的结果是28#xff1b;x64平台下是40#xff0c;size_t变了#xff0c;由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组#xff0c;…个人主页Lei宝啊
愿所有美好如期而遇 说明
博主是x86平台所以下面的结果是28x64平台下是40size_t变了由int变long long。 接下来我们先来介绍 vs 下string的数据结构 我们可以看到有一个_Buf数组这个数组的大小为16个字节但是存有效元素个数为15最后一位存\0以及char*,int size,int capacity,共12字节所以我们计算下来总28字节。
g下为什么是8个字节呢首先linux下默认是64平台所以我们也就知道其实这是个指针他不存大小的空间吗我们来看 我们发现是存的也就是说存在size和capacity去记录大小那么他们在哪里呢 那么什么是引用计数呢 我们在拷贝stack或者string时会发生深拷贝但是如果我们采用浅拷贝那么就会是这样 那么当a和b析构时这一块空间会被析构两次程序也就崩了所以引用计数就用在这里g下就是浅拷贝这块空间每被引用一次引用计数1当析构时引用计数不为1就减减当他为1时析构释放这块空间。
那么也许你会问共用一块空间那如果a要写入数据b不就被影响了吗所以此时会发生写时拷贝谁写入数据操作系统就会为其分配一块新的空间并使指针指向新的空间将旧数据拷贝过来。
这样做意义是什么呢这样做是在赌赌你不写入数据只读这样就省下资源了就算要写入最多也就是之前的样子稳赚不赔。 本篇讲解就到这里了。