如何只通过指针获取所指内容的大小,只要会看内存,就能通过指针找到所指内容的大小。
在网上找了许久都没有找到答案,都说不能通过指针获取所指内容的大小,抱着好奇的态度去内存中寻找,还真让我给找到了。我用的是linux。
随便在堆上new一块地址;
int *p=new int;
跟内存在p值的基础上减8字节,会发现有一个值为0x00000021;当
int *p=new int[7];
会发现有一个值位0x00000031;
之后会以数组增加4为等差增加;
为什么会这样呢?
因为对于这个指针来说它会有一个开始的地方和结束的地方,各占8字节;以0x00000021开始,以0x0000f181结束;
总归一句话:类同于分页机制;
版权声明:本文为Stephen_Jms原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。