当前位置: 首页 > news >正文

麻阳住房和城乡建设局网站色一把看片网 做最好的在线看片网站

麻阳住房和城乡建设局网站,色一把看片网 做最好的在线看片网站,钣金外包加工网,龙岗区住房和建设局官方网站STL源码剖析#xff1a;Allocator STL源码剖析#xff1a;AllocatorSGI标准的空间适配器SGI特殊的空间适配器构造和析构的基本工具#xff1a;construct()和destroy()一级配置器和二级配置器空间配置函数allocate()空间释放函数deallocate() SGI标准的空间适配器 SGI标准的…STL源码剖析Allocator STL源码剖析AllocatorSGI标准的空间适配器SGI特殊的空间适配器构造和析构的基本工具construct()和destroy()一级配置器和二级配置器空间配置函数allocate()空间释放函数deallocate() SGI标准的空间适配器 SGI标准的适配器名为 std::allocator。该空间适配器只是对c的::operator new 和 ::operator delete做了一层浅封装并且由于封装的缘故反而降低了效率。 template class T inline T* allocate(ptrdiff_t size, T*) {set_new_handler(0);T* tmp (T*)(::operator new (size_t)(size * sizeof(T)));if (tmp 0) {cerr out of memory endl;exit(1);}return tmp; }template class T inline void deallocate(T* buffer) {::operator delete(buffer); }SGI特殊的空间适配器 SGI特殊的空间适配器称为 std::alloc 在该适配器中将new和delete的操作细分为四个操作 内存配置由alloc::allocate()负责内存释放由alloc::deallocate()负责对象的构造操作由::construct()负责对象的析构操作由::destroy()负责 构造和析构的基本工具construct()和destroy() 构造函数construct()通过placement new 在已经分配的内存上调用对象的构造函数 template class T1, class T2 inline void construct(T1* p, const T2 value) {new (p) T1(value); }析构函数有两个版本第一个版本较简单第二个版本较复杂 //第一个版本 template class T inline void destroy(T* pointer) {//调用该对象的析构函数pointer-~T(); }//第二个版本 //析构first到last中的对象 template class ForwardIterator inline void destroy(ForwardIterator first, ForwardIterator last) {__destroy(first, last, value_type(first)); }//判断元素的value type中是否有trivial destructor(不重要的析构函数) template class ForwardIterator, class T inline void __destroy(ForwardIterator first, ForwardIterator last, T*) {typedef typename __type_traitsT::has_trivial_destructor trivial_destructor;__destroy_aux(first, last, trivial_destructor()); }//如果元素的数值型别有non_trivial destructor template class ForwardIterator inline void __destroy_aux(ForwardIterator first, ForwardIterator last, __false_type) {for ( ; fitst last; first) {destroy(*first);} }//如果元素的数值型别有trivial destructor template class ForwardIterator inline void __destroy_aux(ForwardIterator first, ForwardIterator last, __true_type) {}//以下是destroy()第二版本针对迭代器char* 和 wchar_t*的特化版 inline void destroy(char*, char*) {} inline void destroy(wchar_t*, wchar_t*) {}一级配置器和二级配置器 二级配置器名为__default_alloc_template其中 维护16个自由链表负责16种小型区块的次配置能力。内存池以malloc配置而得如果内存不足转调用一级配置器(一级配置器有处理程序)如果需求区块的大小大于128字节就转调用第一级配置器 一级配置器名为__malloc_alloc_template,其中 allocate()直接使用malloc()deallocate()直接使用free()模拟c的set_new_handler()以处理内存不足的状况 空间配置函数allocate() //n must be 0 static void* allocate(size_t n) {obj * volatile * my_free_list;obj* result;//大于128字节就调用第一级配置器if (n (size_t) __MAX_BYTES) {return(malloc_alloc::allocate(n));}//寻找16个free lists中适当的一个my_free_list free_list FREELIST_INDEX(n);result *my_free_list;if (result 0) {//如果没找到可用的node则重新装填free listvoid *r refill(ROUND_UP(n));return r;}//调整free list*my_free_list result-free_list_link;return (result); }空间释放函数deallocate() //p不能为0 static void deallocate(void* p, size_t n) {obj* q (obj *)p;obj* volatile* my_free_list;//大于128就调用第一级配置器if (n (size_t)__MAX_BYTES) {malloc_alloc::deallocate(p, n);return;}//寻找对应的free listmy_free_list free_list FREELIST_INDEX(n);//调整free list回收区块q-free_list_link *my_free_list;*my_free_list q; }
http://www.pierceye.com/news/627868/

相关文章:

  • 抚州市住房和城乡建设局网站手机网站素材
  • 用dw做音乐网站模板策划公司收费明细
  • 大气手机网站模板免费下载南昌seo排名
  • 做卖衣服网站源代码seo搜索引擎优化名词解释
  • 东营免费建网站网络运维必备知识
  • 盐城建设网站备案 网站负责人
  • 外贸营销网站怎么建设网站域名注册证书
  • 安徽网站建设首选-晨飞网络甘肃泾川县门户网站两学一做
  • 360°网站标签旋转显示特效建筑设计专业比较好的学校
  • 郫县建设局网站中文wordpress模版
  • 塔里木油田公司档案馆网站建设研究响应式网站建设教程
  • wordpress侧边栏怎么加php代码重庆seo优化公司
  • 自做建材配送网站做的比较好的游戏网站
  • 建设网站公司兴田德润在哪里秦皇岛海港区
  • 做网站阜阳百度投放广告
  • 北京互联网金融公司排名网站栏目优化
  • 教育网站解决方案用wordpress制作表单
  • 整站wordpress下载phpcms 网站标题
  • 湛江市建设局官网站品牌网络营销方法分析
  • 做网站数据库表各字段详情福建省港航建设发展有限公司网站
  • 潍坊 营销型网站建设游戏设计师网站有哪些
  • 用花生棒做网站快吗大型网站开发合同
  • 网站建设什么原因最主要wordpress mu安装
  • 龙岗网站设计公司价格wordpress商品属性选择
  • 企业网站如何优化足球比方类网站开发
  • 大型网站开发 优帮云公司制度建设的意义
  • 收录网站工具沈阳高端网站定制
  • 做网站哪家比较好网站网页翻页设计
  • 湖州建设网站制作手机网站登录模板
  • 重庆网站制作技术wordpress获取特定尺寸特征图像