一、基本原理和概念
一般應用在內存池相關的代碼中,成功使用嵌入式指針的前提條件,類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 指向下一塊待分配的內存,就實現了空間內存塊的鏈接 }