Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74990
  • 博文数量: 25
  • 博客积分: 692
  • 博客等级: 上士
  • 技术积分: 205
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-29 15:42
文章分类
文章存档

2011年(25)

分类: C/C++

2011-02-27 16:27:00

  1 #include
  2 #include
  3 #include
  4 
  5 struct test
  6 {
  7     char *str;
  8 };
  9 
 10 int main(void)
 11 {
 12     struct test *ptest = NULL;
 13     
 14     ptest = malloc(sizeof(struct test));
 15     if(NULL == ptest)
 16     {
 17         fprintf(stderr, "main: malloc error\n");
 18         exit(EXIT_FAILURE);
 19     }
 20     
 21     ptest->str = strdup("hello world");   /* strdup()函数调用了malloc()函数 */
 22     
 23 //  free(ptest->str);
 24     free(ptest);                          /* 只释放了ptest指向的空间 */
 25   
 26     return EXIT_SUCCESS;
 27 }
如果此时程序的23行被注释的话,会造成ptest->str所指向的内存空间泄漏。
所以在释放内存空间时,要清楚各个指针所指向的空间是什么。因为free(p)函数只释放p所指向的空间而已。
阅读(1256) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~