Chinaunix首页 | 论坛 | 博客
  • 博客访问: 816803
  • 博文数量: 117
  • 博客积分: 2583
  • 博客等级: 少校
  • 技术积分: 1953
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-06 22:58
个人简介

Coder

文章分类
文章存档

2013年(1)

2012年(10)

2011年(12)

2010年(77)

2009年(13)

2008年(4)

分类: C/C++

2009-10-27 22:18:50

问题背景:
在做动态内存分配时,每一个内存区域都是链表上的一个节点,区域的开头都是一个结构体,提供一些关于该区域的信息,通常包括指向下一个节点的指针,指向上一个节点的,一个标记用来指示区域是否已分配,区域的大小,以方便内存的管理。就遇到一个将一个结构体写入某个特定的内存地址的问题。

解决方法:
比如,设节点为 struct node,内存区域的开头由指针char *head指示,需要在开头处便宜1024字节处写入一个节点结构,可以使用c的强制类型转换
struct node *destnode = (struct node *)(head + 1024);
这样我们也就可以通过引用结构指针destnode来向那个区域写入数据。
c程序设计语言里,free()函数的实现,就用的强制类型转换来获得关于所要释放的内存块的信息。比如要释放的是指针mem指向的内存,它的实现很类似于这样:
struct node *mnode = (struct node *)mem;
mnode -= 1;
减少一个步长从而获得了关于内存块的信息。

阅读(2128) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~