一、基本原理和概念
一般应用在内存池相关的代码中,成功使用嵌入式指针的前提条件,类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 指向下一块待分配的内存,就实现了空间内存块的链接 }