访问指针所指向的位置
来源:互联网 发布:小米手环2淘宝50天预发 编辑:程序博客网 时间:2024/05/16 22:01
今天又犯了一个低级错误,并造成内存访问越界,最要命的是竟然花了我好长时间才搞明白,可悲、可恨....呵呵。
就是分配了一个缓存,如char* buf = new buf[4096]
然后,将这个缓存作为一个内存池,必要时分配使用。假如我现在需要分配一个结构体node大小空间,node如下定义:
struct node{
int count;
struct node* PHead;
};
代码如下所示(为了简单起见,假如从第一个node开始分配):
node* pNode = (node*)buf;
下面如果要分配第二个,如下所示:
node* pNode2 = (node*)(buf+sizeof(node));
如果分配第n个,代码如下:
node* pNoden = (node*)(buf+sizeof(node)*n);
以上代码都是正确的,不过本人粗心大意:
代码写成(假如分配第n个节点):
node* pNoden = (node*)(buf+n)
呵呵,我们知道,假如指针当前位置为Addr,指针+一个常数(n),得到地址为Addr+sizeof(type)*n。其中,type为指针的类型.即
指针累加的不长,由其类型和累加的长度决定的。
- 访问指针所指向的位置
- free指针所指向的内容
- 修改const指针所指向的值
- 指针的类型 指针所指向 指向指针的引用
- 指针的内容 ; 指针的地址 指针所指向的内容 指针的类型 指针所指向的类型
- 指针的类型和指针所指向的类型说明
- 指针的类型和指针所指向的类型
- 面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析
- 面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析
- 修改常量指针所指向变量的方法
- 面向对象--多继承&派生类对象内存布局分析&各基类指针所指向的位置分析(解决面试宝典第四版P147问题)
- 很有助于理解指针和指针所指向的内容的代码片段
- 在一个无头指针的单链表中,删除指针p所指向的结点
- C经典 指针与指针所指向的值的区别
- 输出指针所指的地址
- 快速排序中对指针地址所指向的值进行排序的代码
- C指针强制类型转换对所指向的数据的影响
- C语言中交换两个指针变量所指向的值
- 程序员需要具备的基本技能
- 5. 其他 C++ 特性
- Asterisk Manager Interface(AMI)
- 7. 注释
- 8. 格式
- 访问指针所指向的位置
- java 序列化版本的作用
- 9. 规则特例
- 在Struts2中集成Spring详细讲解
- 10. 结束语
- 数据库中几种常见的题型
- 无效区域 更新区域 重画 WM_PAINT 的关系和机制(转载总结)
- fs/binfmt_aout.c:270: error: 'SEGMENT_SIZE' undeclared
- pushlet简介