STL源码剖析配置器中的union obj
来源:互联网 发布:旺旺号是淘宝会员名吗 编辑:程序博客网 时间:2024/05/25 01:36
最近看了《STL源码剖析》一书的一些章节,当看到第二章空间配置器时有些傻眼。特别是在union obj上。
union obj { union obj *free_list_link; char client_data[1];};
这个地方对于client_data[1]的理解让人费神。
后来在网上看了一些解释后才明白了些。 当我们只看char client_data[1] 这个数组时,我们知道数组中只有一个元素,占用字节为1字节;而client_data则是指向这个数组的首地址,现在将其看为一个普通的指针,指向此数组的首地址。将其放入union obj中时,union obj占用总字节数为4字节(32位系统),其中第一个字节也可以存放数组client_data中的元素,此时,client_data依然指向此数组的首地址,而它的首地址即是这个union obj的首地址。因此,书上说,从其第二字段观之,obj可被视为一个指针,指向实际区块。
今天参加笔试被虐后,才发现这个union的妙处。由于内存池的空间没有分配时,里面是不用存放其他数据的,因此将它来指向下一个block的开始,而当它被分配后,那么它就不用指向某个block了,直接用它来存放数据。这样就可以实现两用了,核心原因是obj中的指针和首地址不会同时用到。
0 0
- STL源码剖析配置器中的union obj
- STL空间配置器的union obj
- STL空间配置器的union obj
- 《STL源码剖析》STL空间配置器
- 《STL源码剖析》obj * volatile * my_free_list
- STL源码剖析---空间配置器
- STL源码剖析---空间配置器
- STL源码剖析之空间配置器
- STL源码剖析---空间配置器
- 《STL 源码剖析》 内存配置器 笔记
- STL源码剖析---空间配置器
- STL源码剖析:空间配置器
- STL源码剖析---空间配置器
- 《stl源码剖析》-- 空间配置器
- STL源码剖析---空间配置器
- STL源码剖析--空间配置器
- STL源码剖析之空间配置器
- STL源码剖析(1):空间配置器
- JDK编译blog
- Known Notation 39届亚洲赛牡丹江站K题
- android 游戏导引(4. 简单纹理贴图)
- 宏的举例
- 【Java.IO】I/O 【字节/字符】【处理流】 - 之 - 【缓冲流 】- Buffered*
- STL源码剖析配置器中的union obj
- easyui datagrid 无数据信息提示
- Android之短信监听与内容获取
- windows环境下端口占用问题
- CCF NOIP2014前的复习(10.13~10.15)
- Truncate Delete Drop命令的区别 .
- 更新
- hdu 5023 线段树+状压
- 程序员之路——一个老程序员对刚上大学的学弟学妹的忠告 【转载】