Chinaunix首页 | 论坛 | 博客
  • 博客访问: 708994
  • 博文数量: 161
  • 博客积分: 2998
  • 博客等级: 少校
  • 技术积分: 1697
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-28 09:39
文章分类

全部博文(161)

文章存档

2012年(6)

2011年(120)

2010年(35)

分类: LINUX

2011-05-07 15:30:04

内存泄露也就是堆上的内存,如果其malloc后没有及时free,这块内存就无法释放,直到整个程序终止。
堆上剩余的内存块不是所有十余内存块之和,因为malloc函数申请的是连续的一块内存。
malloc(0)的返回值是一个正常的内存地址,但是你却无法使用这块大小为0的内存。
char *p = (char *)malloc(sizeof(char) * 10);
的话,free(p)的含义就是:把这块内存和p之间的所有关系都斩断,从此p和那块内存之间再无瓜葛,至于指针变量P本身保存的地址并没有改变,但是他对于这个地址处那块内存却没有了所有权,那块被释放的内存里面保存的值也没有改变,只是再也没有办法使用了。
阅读(628) | 评论(0) | 转发(0) |
0

上一篇:栈、堆、静态区

下一篇:指针使用的问题

给主人留下些什么吧!~~