首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

还是不明白, 这个函数为什么能返回局部指针?解决方案

2012-02-22 
还是不明白, 这个函数为什么能返回局部指针?NLISTPTRnew_nlist(char*str){NLISTPTRnewptrif(sizeof(newpt

还是不明白, 这个函数为什么能返回局部指针?
NLISTPTR   new_nlist(char   *str)
{
      NLISTPTR   newptr;

      if   (sizeof(newptr-> string)   <   strlen(str))
      {
            if   (verbose)
        fprintf(stderr, "[new_nlist]   %s\n ",msg_big_one);
      }
      if   ((   newptr   =   malloc(sizeof(struct   nlist)))   !=   NULL)
        {
            strncpy(newptr-> string,   str,   sizeof(newptr-> string));
            newptr-> next=NULL;
          }
      return   newptr;
}
难道malloc出来的可以这样用?


[解决办法]
malloc之后空间在那了,返回指针之后还是能操作的,malloc的空间一定要free才能释放

如果局部变量是一个类似int[]这样的,则会自动销毁,也就无法返回了
[解决办法]
malloc的是堆内存,不是栈
栈内申请的空间,函数结束时就会失效;而堆内存不会,需要你自己来释放的,否则会造成内存泄漏

热点排行