免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: 孙轩
打印 上一主题 下一主题

请教: calloc 貌似分配了栈地址的问题 [复制链接]

论坛徽章:
0
11 [报告]
发表于 2010-05-26 14:57 |只看该作者
特别是dstr前面几项是怎么分配空间的?分配之后怎么存放数据的?我看好像有一个11的限长,是不是存放的时候 ...
huangwei0413 发表于 2010-05-26 09:18



    前面几项也是同样分配的 限长是做判断用的
if ((rstr == SPACE))
          {
                  if (str_end == NULL)
                  {
                    str_end = rstr + i;                    
                    if(str_start == NULL || str_end <= str_start || str_end - str_start > str_limit || cnt >= num_limit)
                    {                           
                            free_strings(cnt-1,dstr);
                            return -1;
                    }
                    else
                    {
                            len = str_end - str_start + 1;
                            dstr[cnt] = calloc(1,len);                           
                            if (dstr[cnt] == NULL)
                            {
                                    free_strings(cnt-1,dstr);
                                    return -1;
                            }                           
                            strncpy(dstr[cnt],str_start,len-1);
                            printf("cnt: %d:%s\r\n",cnt+1,dstr[cnt]);
                            cnt++;                           
                            str_start = NULL;
                    }
            }
                  continue;
          }

论坛徽章:
0
12 [报告]
发表于 2010-05-26 15:07 |只看该作者
你那个strings[]是栈里面分配的啊,拿来存放calloc()分配的东西,离开声明范围指针就无效了。注意我的例子是 ...
没本 发表于 2010-05-25 18:44



    strings[]是栈里面分配的,但是strings[]的内容是calloc分配的一个地址,strings[]是上一个函数申明的,没有离开声明范围.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP