1)如果申请的内存空间大于128bytes, 则交由第一个分配器处理 2)分配器首先将申请内存的大小上调至8的倍数n,并根据n找出其对应的空闲链表地址__my_free_list 3)如果该空闲链表中有可用的空闲块,则将此空闲块返回并更新__my_free_list,否则转到4) 4)到这一步,说明__my_free_list中没有空闲块可用了,分配...
isDetached()调用一个引用计数,用来推断该QVector是否独立(未被隐式共享)。假设该 QVector 是被共享的。那么我们此时想要在这个已被我们“复制”的 QVector 上调用 append() 时,当然须要真正分配一段新的内存并在该内存上进行加入元素的操作。也就是所谓的“写时复制”。 isTooSmall 则告诉我们当前szie加 1 之...
vector是一个动态数组,它会根据元素的个数,适当的去申请内存。可以简单的把vector理解为,其内部有一个void*指针,用于指向在堆上申请的空间。void*指向的空间用于存放vector元素。vector一直维护着void*空间的大小,当void*指向的堆空间没有空间存放新插入的元素时,它都会去系统申请之前空间大小的两倍空间,并把之前的元...
从输出结果中可以看出所使用的系统中标准库为vector对象提供的内存分配策略:创建空vector对象时容量为0;当现有容量用完后,重新分配空间时容量增幅为原容量的1/2(整出2的结果),如果增幅小于1,则取1。