在上一篇文章中,小编为您详细介绍了关于《主板是LGA775针的?LGA 775的主板有支持双处理器的主板么》相关知识。本篇中小编将再为您讲解标题动态内存申请对齐有什么样意义?关与radix tree所占内存空间的控制。
我在书上看见①个动态内存分配器的实现。这个分配器先申请①段内存,然后在把这段内存当作双端栈通过变换栈顶指针来进行内存分配,实现代码如下:
//对齐n#define ALIGNUP(naddress,nbytes) ((((uint)naddress)+n(nbytes)-① ) (~((nbytes)-①)))n//初始化,申请①段空间,BYTEALIGN对齐nint init(size_t tsize,int BYTEALIGN)n{n _byte_alignment = BYTEALIGN;nttsize = ALIGNUP(tsize,_byte_alignment);nt_all_allocated_memory = tsize + _byte_alignment;ntnt_pmemory = (u⑧*)malloc(_all_allocated_memory);ntif(!_pmemory)nt{nttreturn SYSTEM_MEMORY_SHORT;nt}nnt_pbase = (u⑧*)ALIGNUP(_pmemory,_byte_alignment);nt_pcap = (u⑧*)ALIGNUP(_pmemory+tsize,_byte_alignment);nnt_pframe_base = _pbase;nt_pframe_cap = _pcap;nntreturn SYSTEM_MEMORY_SUCCESS;n}n//分配nvoid* alloc(size_t tsize,bool tpos)n{ntu⑧* _pret;nnttsize = ALIGNUP(tsize,_byte_alignment);nntif(_pframe_base+tsize_pframe_cap)nt{nnnttreturn NULL;nt}nntif(!tpos)nt{ntt_pret = _pframe_base;ntt_pframe_base += tsize;nt}ntelsent{ntt_pframe_cap -= tsize;ntt_pret = _pframe_cap;nt}nntreturn (void*)_pret;nn}n这个BYTEALIGN应该取多少?(我只知道应该取②的幂,但是具体取多少有没有什么要求呢?)另外,这段代码中使用ALIGNUP对齐有什么意义?如果不对齐,应该也能工作吧。我只知道在实际内存中进行对齐是为了提高CPU读取效率,但是这里应该不存在CPU读取的问题呀?
好管理。
就像①个柜子,如果东西乱⑦⑧糟的堆在里面,想把不用的扔掉,不好找不好扔;就算找出来扔了,它空出来的那个位置想放别的东西,又不见得就遇到①个刚好大小合适的;想整理①下吧,弄不好所有的东西都得倒腾①遍,真麻烦。
改进的办法就是装隔板,固定大小的隔板。①格不够就两格合并成①格用,即使东西只有①.⑤格大小,也占②格。虽然看上去有点浪费,但是好管理。如果想整理①下,可以整格整格的挪,方便。
另:参见 什么是字节对齐,为什么要对齐? - C++
内存对齐为了:
①. 部分CPU不支持非对齐访问
②. 大部分总线以BURST为单位读内存,burst通常大于①个字节,不对齐访问会让访问速度变慢
③.cache读入①般以cacheline为单位更新。不对齐会占有多余cacheline
①般来说,我们会用cacheline为单位对齐,这样其他问题也得到相应权衡,linux内核还会提供这样功能的宏。
但如果考虑到polution,对齐的技巧就更复杂了,有兴趣可以进①步讨论。
radix tree 是 patricia trie 的别名,有个 adaptive patricia trie ,可以增删改,核心思想就是针对不同的节点尺寸,使用不同的结点表达方式,控制内存的合理上界。google 上可以搜到。
编后语:关于《动态内存申请对齐有什么样意义?关与radix tree所占内存空间的控制》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《从华为P10拖影、没疏油层、WiFi速度严重阉割、闪存和内存都混用等问题来看?如何看待华为内存门后曝光的处理方式》,感兴趣的同学可以点击进去看看。
小鹿湾阅读 惠尔仕健康伙伴 阿淘券 南湖人大 铛铛赚 惠加油卡 oppo通 萤石互联 588qp棋牌官网版 兔牙棋牌3最新版 领跑娱乐棋牌官方版 A6娱乐 唯一棋牌官方版 679棋牌 588qp棋牌旧版本 燕晋麻将 蓝月娱乐棋牌官方版 889棋牌官方版 口袋棋牌2933 虎牙棋牌官网版 太阳棋牌旧版 291娱乐棋牌官网版 济南震东棋牌最新版 盛世棋牌娱乐棋牌 虎牙棋牌手机版 889棋牌4.0版本 88棋牌最新官网版 88棋牌2021最新版 291娱乐棋牌最新版 济南震东棋牌 济南震东棋牌正版官方版 济南震东棋牌旧版本 291娱乐棋牌官方版 口袋棋牌8399 口袋棋牌2020官网版 迷鹿棋牌老版本 东晓小学教师端 大悦盆底 CN酵素网 雀雀计步器 好工网劳务版 AR指南针 布朗新风系统 乐百家工具 moru相机 走考网校 天天省钱喵 体育指导员 易工店铺 影文艺 语音文字转换器