莱芜网站优化加徽信xiala5效果好,网站运营的重要性,怎么给公司做推广,百度网站制作公司一、内存池的缺陷
作者在上一版本里面介绍了链表实现内存池#xff0c;其中有一个小缺陷#xff1a;虽然较少了cookie的内存损耗#xff0c;但是加入了一个额外的指针#xff0c;仍然需要占用内存。我们仔细看内存池的设计思想#xff0c;可以发现一个关键点#xff1a;…一、内存池的缺陷
作者在上一版本里面介绍了链表实现内存池其中有一个小缺陷虽然较少了cookie的内存损耗但是加入了一个额外的指针仍然需要占用内存。我们仔细看内存池的设计思想可以发现一个关键点 对于一个内存切片如果放置在freeList中才会使用指针。如果被用于构造对象则这个指针毫无用处。 于是可以想到可以将一块内存区域即作为指针使用又用于构造对象。 方案一共同体这个东西过于古早了不过多解释。 方案二嵌入式指针。
二、指针类型转换
想要把嵌入式指针讲清楚先要把指针类型转换讲清楚。 在C里面所有指针都是四字节表示一个地址。那么为什么指定指针的类型呢编译器根据指针定位到这个内存地址之后根据指针类型去解析这个数据。举个例子假如是一个int类型的指针定位到这个地址之后扫描后面的四个字节去解析这32位二进制代表的int数字是多少。 说一个看起来违背常识的事情指针之间转换基本是不被编译器报错的但是有可能解析出来一大堆稀奇古怪的东西所以最好不要这样做。也就是说给编译器一个地址和数据类型编译器就可以解析至于解析出来的是什么东西由程序员负责 看代码
#include iostream
using namespace std;class Test
{
public:int m_i;int m_j;
};class A{
public:int a;
};int main()
{Test t ;t.m_i1000;t.m_j2;A *a(A*)t;couta-aendl;coutt.m_j;
}输出结果
1000
2说明一点 1Test类的字节数大于A类将Test指针强转为A类型指针后相当于使用前面的地址后面的地址也不会被抛弃只是当前不用。 2不考虑cookie的情况下a-a相当于解析t的前四位字节恰好前四位也是int类型就可以解析出来t.m_i对应的值。