指针值加上一个数值的实际意义
2015-09-11 16:08
344 查看
一直没怎么注意指针值加上数值的问题,认为就是在指针地址上往后叠加n个字节,直到今天写STL 库中二级空间配置器,内存报错:堆被损坏!单步跟踪后才发现问题
首先说明问题:
T* p += num 等价于 T * p += sizeof(T) * num
这个问题很基础,但是由于平时很少注意内存指针的值的问题,才会导致这么简单的理解错误
首先说明问题:
[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
这个问题很基础,但是由于平时很少注意内存指针的值的问题,才会导致这么简单的理解错误
相关文章推荐
- CoreLocation框架的使用
- 《剑指offer》从上往下打印二叉树
- linux命令--nslookup
- 实现一个最简单的输入框提示功能
- 使用PHP自动部署GIT代码
- Android studio jni
- ActiveMQ与Spring集成(五)
- java之五篇:戏说java中的强转
- 最惹人讨厌的女同事类型
- Android基础入门教程——7.5.1 WebView(网页视图)基本用法
- UE4 Shader Development
- Android - 百度地图打包之后出现的问题
- Linux常用命令大全
- MySQL server has gone away 问题的解决方法
- 关于html 定位 z-index 覆盖问题
- Cocos2d-x 在Eclipse中遇到Method 'XXX' could not be resolved问题修改
- C#泛型的使用
- java之四篇:jaVa的硬伤NullPointerException
- mac版eclipse修改主题
- 不想写歌的码农,不是个好电影人