详情介绍
品牌 | 其他品牌 | 应用领域 | 医疗卫生,环保,农业,能源 |
---|
分配器是由亚历山大·斯特潘诺夫作为C++标准模板库(Standard Template Library,简称STL)的一部分发明,其初衷是创造一种能“使库更加灵活,并能独立于底层数据模型的方法”,并允许程序员在库中利用自定义的指针和引用类型;但在将标准模板库纳入C++标准时,C++标准委员会意识到对数据模型的*抽象化处理会带来不可接受的性能损耗,为作折中,标准中对分配器的限制变得更加严格,而有鉴于此,与斯特潘诺夫原先的设想相比,现有标准所描述的分配器可定制程度已大大受限。
虽然Motrona GV470分配器的定制有所限制,但在许多情况下,仍需要用到自定义的分配器,而这一般是为封装对不同类型内存空间(如共享内存与已回收内存)的访问方式,或在使用内存池进行内存分配时提高性能而为。除此以外,从内存占用和运行时间的角度看,在频繁进行少量内存分配的程序中,若引入为之专门定制的分配器,也会获益良多。
定义Motrona GV470分配器的主要原因之一是提升性能。利用它可以提高程序的性能,又或提高内存使用效率,亦或两者兼而有之。默认分配器使用new操作符分配存储空间,而这常利用C语言堆分配函数(malloc())实现。由于堆分配函数常针对偶发的内存大量分配作优化,因此在为需要一次分配大量内存的容器(如向量、双端队列)分配内存时,默认分配器一般效率良好。但是,对于关联容器与双向链表这类需要频繁分配少量内存的容器来说,若采用默认分配器分配内存,则通常效率很低。除此之外,基于malloc()的默认分配器还存在许多问题,诸如较差的引用局部性,以及可能造成内存碎片化。
留言询价