关于内存单元的想法

时间:2022-06-13 01:18:15

该从哪里讲起呢?

就先说说我最近做的工作:  IP数据报的截取与分析。

在这个工程里面,已经用pData[65000]   recv IP数据报, 他用了一句  IPHeader *pIPHdr = (IPHeader*)pData;

其中IPHeader是一个结构体:

typedef struct _IPHeader
{
UCHAR iphVerLen;
UCHAR ipTOS;
USHORT ipLength;
USHORT ipID;
USHORT ipFlags;
UCHAR ipTTL;
UCHAR ipProtocol;
USHORT ipChecksum;
ULONG ipSource;
ULONG ipDestination;
}IPHeader, *PIPHeader;


而pData的格式,查一下IP数据报的格式:

关于内存单元的想法


会不会发现, 其实结构体的每一个属性的类型大小与IP数据报的大小“相似”,    其实, 如果 你将结构体的首指针指向IP数据报的首地址(即上文的IPHeader *pIPHdr = (IPHeader*)pData;) 结果如何呢?  当我们在访问结构体的时候, 比如我们访问第一个属性iphVerLen(UCHAR ),编译器将从IP数据报的首地址开始 读取一个字节(UCHAR类型的长度)作为iphVerLen的值, 同理, 当我们访问ipTOS(UCHAR), 编译器编译器将从IP数据报的首地址开始 读取一个字节,再读取下一个字节作为ipTOS的值。。。。。。





delete的作用: 援引网上的一句哈


指针被delete 后,指针的值不会改变,还是原来的值,但不能再使用指针指向的内存了

这里的理解方式应该是这样的: 每一个数据访问的时候需要申请空间 alloc