嵌入式指針


一、基本原理和概念
一般應用在內存池相關的代碼中,成功使用嵌入式指針的前提條件,類A的大小必須不小於4字節
工作原理:借用類A對象所占用內存空間的前4個字節,用這4個字節來鏈接這些空閑的內存塊
一旦某一塊被分配出去,那么這個快的前4個字節就不再需要,此時這4個字節可以被正常使用

 

二、代碼實現

class Test
{
public:
    int m_i;
    int m_j;

    struct Obj  // 相當於在類中定義了一個結構體
    {
        struct Obj* pNext;   // 這個pNext是一個嵌入式指針
        // 
    };
};

void func()
{
    Test myTest;
    cout << sizeof(myTest) << endl; // 8字節,結構體只是在類中定義,並不是類中有結構體的成員變量
    Test::Obj* pTemp;    // 定義一個指針
    pTemp = (Test::Obj*)&myTest;   // pTemp 指向對象myTest 的首地址
    pTemp->pNext = nullptr;
    // 因為Test::Obj 結構體中只有一個指針,pTemp 指向的是Test::Obj 里面內容的首地址
    // 而其中的內容只有pNext,所以此時pTemp 和 pTemp->pNext 所指向的是同一塊位置
    // pTemp->pNext = nullptr;相當於把myTest 的前4個字節初始化為 00 00 00 00
    // 如果將pTemp->pNext 指向下一塊待分配的內存,就實現了空間內存塊的鏈接
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM