1. vector 底层基本结构是数组,内存空间不够时会调用分配器(allocator)动态开辟双倍的内存空间。2. vector 中有 size 和 capacity 之分,size 相当于瓶子里有多少水,capacity则是瓶子的容积3. 当vector调用clear函数的时候,size变为0,...
分类:
其他好文 时间:
2015-05-27 20:36:23
阅读次数:
156
error LNK2019: 无法解析的外部符号 "class std::vector,class std::allocator >,class std::allocator,class std::allocator > > > __cdecl Public_Func::split(class
std::basic_string,class std::allocator >,class std...
分类:
其他好文 时间:
2015-05-19 10:30:15
阅读次数:
334
Allocaorallocator 指的是空间配置器,用于分配内存。STL中默认使用SGI STL alloc作为STL的内存分配器,尽管未能符合标准规格,但效率上更好。SGI STL也定义有一个符合标准,名为allocator的配置器,但SGI自己从未使用过它,主要原因是它仅仅把C++的new操作...
分类:
其他好文 时间:
2015-05-17 10:46:39
阅读次数:
136
元素保证是连续存储了 operator[]之类的不可以invalidate iterator了,于是COW不行了 不再是container所以swap不需要遵守不能copy/move/swap元素的规定,于是SSO可行了 reference不再是Allocator::reference了,而直接就是...
分类:
编程语言 时间:
2015-05-04 13:23:38
阅读次数:
128
说明:我认为要读懂STL中allocator部分的源码,并汲取它的思想,至少以下几点知识你要了解:operator new和operator delete、handler函数以及一点模板知识。否则,下面你很可能看不大明白,补充点知识再学习STL源码比较好。下面会结合关键源码分析C++STL(SGI版...
分类:
编程语言 时间:
2015-04-28 17:34:00
阅读次数:
199
内存池简单说,是为了减少频繁使用 malloc/free new/delete 等系统调用而造成的性能损耗而设计的。当我们的程序需要频繁地申请和释放内存时,频繁地使用内存管理的系统调用可能会造成性能的瓶颈,嗯,是可能,毕竟操作系统的设计也不是盖的。内存池的思想是申请较大的一块内存(不够时继续申请),之后把内存管理放在应用层执行,减少系统调用的开销。...
分类:
其他好文 时间:
2015-04-24 19:15:37
阅读次数:
341
一、Memcache1. memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小redis有部份存在硬盘上,这样能保证数据的持久性。2. Memcache使用了Slab Allocator的内存分配机制:按照预先规定的大小,将分配的内存分割成特定长度的块,以完全解决内存碎片问...
分类:
其他好文 时间:
2015-04-20 16:30:45
阅读次数:
115
Reference Constructors vector Constructs a vector of a specific size or with elements of a specific value or with a specific allocator or as a copy of...
分类:
其他好文 时间:
2015-04-19 21:11:30
阅读次数:
183
简介STL的 __pool_alloc, __mt_alloc,boost的pool系列, ace的ACE_Cached_Allocator均为定长内存池。说明内存池,根据存储的元素的长度是否可变,分为变长,与定长两种内存池。从逻辑上来讲,定长内存池只需存储相同大小的元素,因此无须花费额外的空间(数...
分类:
其他好文 时间:
2015-04-07 22:55:28
阅读次数:
225
allocator类是一个模板,它提供类型化的内存分配以及对象构造与撤销。allocator类将内存分配与对象构造分开。当allocator对象分配内存时,它分配适当大小并排列成保存给定类型对象的空间。但是,它分配的内存时未构造的,allocator用户必须分别construct和destroy放置...
分类:
其他好文 时间:
2015-03-31 23:42:50
阅读次数:
338