您的位置:首页 > 其它

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

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

首先说明问题:

[code]int a(0);      //假设 &a = 0x1002
int * p = &a;  //此时 p = 0x1002
p = p + 3;     //错误想法: p = 0x1002 + 3 = 0x1005

//但该操作的实际意义: p = 0x1002 + sizeof(int)*3 = 0x1002 + 0xc (4*3)


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

这个问题很基础,但是由于平时很少注意内存指针的值的问题,才会导致这么简单的理解错误
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: