嵌入式指针embedded pointer的概念以及用法
目錄
- 前言
- 概念
- 用法
- 參考
前言
在針對一個class寫出它的內(nèi)存管理池以及總結(jié)出allocator類(三個版本)中內(nèi)存管理池的第二個版本中涉及到了一個非常重要的概念:嵌入式指針。同時嵌入式指針也在G2.9版本的alloc中出現(xiàn)。現(xiàn)在整理一下網(wǎng)上的一些用法和概念
概念
嵌入式指針工作原理:借用A對象所占用的內(nèi)存空間中的前4個字節(jié),這4個字節(jié)用來 鏈住這些空閑的內(nèi)存塊;
但是,一旦某一塊被分配出去,那么這個塊的 前4個字節(jié) 就不再需要,此時這4個字節(jié)可以被正常使用;
從工作原理中可以看出嵌入式指針使用前提:類A對象的sizeof必須不小于4字節(jié)。
用法
什么時候會用到next指針呢?
next指針的使用都是在申請和歸還的時候,也就是說申請者在使用這塊內(nèi)存的時候從來都不需要next.
既然next指針?biāo)嫉?個字節(jié)不會被同時使用,那我們可以通過union,讓使用時和申請/歸還重用同一塊內(nèi)存。
下面是具體代碼:
再看一下另外一個參考代碼:
struct里放了一個指針,它的大小為4個字節(jié)。這個指針的值,存著下一個內(nèi)存的地址。由于這里只需要指針,所以union可以不使用。
不過很奇怪我在我的編譯環(huán)境下結(jié)果都是8.。。。
參考
內(nèi)存分配(2)–embedded pointer
C++11/14之內(nèi)存池改進(jìn)版
感覺兩者都是參考了侯捷老師的內(nèi)存管理。
總結(jié)
以上是生活随笔為你收集整理的嵌入式指针embedded pointer的概念以及用法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VC6、BC5、G2.9标准分配器一览
- 下一篇: 颐和园有婴儿车出租吗