动态内存申请对齐有什么样意义?关与radix tree所占内存空间的控制

发表时间:2018-02-10 14:20:02 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《主板是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速度严重阉割、闪存和内存都混用等问题来看?如何看待华为内存门后曝光的处理方式》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题