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