Chinaunix首页 | 论坛 | 博客
  • 博客访问: 185874
  • 博文数量: 54
  • 博客积分: 1831
  • 博客等级: 上尉
  • 技术积分: 625
  • 用 户 组: 普通用户
  • 注册时间: 2007-04-12 12:50
文章分类

全部博文(54)

文章存档

2009年(11)

2008年(43)

分类:

2008-05-11 23:41:57

第七章
对内存的思考


就像堆栈段(通过alloc() 函数分配)能够根据需要自动增长一样,数据段中同样也包含了一个对象,用于完成这项工作,这个就是堆(heap)通过malloc()函数或同类函数分配。
用于管理内存的调用是:
malloc和free  :从堆中获得内存以及把内存还给堆
brk和  sbrk   :调整数据段的大小到一个绝对值
堆经常会出现两种问题:
释放或改写仍在使用的内存(内存损害)
未释放不再使用的内存(内存泄露)
导致段错误的几个直接原因:(p161)
常见错误:
1.坏指针值错误.
2改写错误
3指针释放引起的错误
详细的请看(161)
如何在链表中释放元素?
struct node *p,*start ,*temp;
for(p = start;p;p = tmp){
    temp = p->next;
   free(p);
}

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