C++
mxYlulu
ACM燃烧我的卡路里
展开
-
malloc和内存池原理
事先声明,两者没有特别的联系。malloc结论:1、当开辟的空间<128k,调用brk函数,主要移动指针 _enddata(此时的_enddata指的是Linux地址空间中堆段的末尾地址,不是数据段的末尾地址)。2、当开辟的空间大于 128K时,mmap()系统调用函数来在虚拟地址空间中(堆和栈中间,称为“文件映射区域”的地方)找一块空间来开辟。这两者都是分配虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存原创 2020-08-21 13:09:50 · 983 阅读 · 0 评论 -
STL容器
vectorstart和finish指向范围,end_of_storage指向尾端push_back():检查是否有备用空间,如果有就构造元素,调整迭代器finish,如果不够,就扩充空间(重新配置、移动数据、释放原空间)pos_back():将尾端元素拿掉erase(first,last):清除区间内不包括(last)的数据,原理是先把后面复制到前面,然后删除后面。clear:用erase实现。insert:在指定位置前插入元素,原理是把后面的数据移动到插入后的后面位置,然后插入。(实际操原创 2020-08-19 18:07:36 · 121 阅读 · 0 评论