指针值加上一个数值的实际意义

来源:互联网 发布:屏幕录像软件ios 编辑:程序博客网 时间:2024/06/03 16:41

一直没怎么注意指针值加上数值的问题,认为就是在指针地址上往后叠加n个字节,直到今天写STL 库中二级空间配置器,内存报错:堆被损坏!单步跟踪后才发现问题

首先说明问题:

int a(0);      //假设 &a = 0x1002int * p = &a;  //此时 p = 0x1002p = p + 3;     //错误想法: p = 0x1002 + 3 = 0x1005//但该操作的实际意义: p = 0x1002 + sizeof(int)*3 = 0x1002 + 0xc (4*3)

T* p += num 等价于 T * p += sizeof(T) * num

这个问题很基础,但是由于平时很少注意内存指针的值的问题,才会导致这么简单的理解错误

0 0