goodluck1987_2017 2015-01-17 02:37 采纳率: 0%
浏览 2016

急急急,用gdb调试程序出现段错误

出错的函数如下:
NodeTp*Crt(int n,char b[],char jj[])
{

int i;
NodeTp *p,*h,*last;
CreateNode(h);
last=h;
for(i=0;i {
if(jj[i]=='2')
{
CreateNode(p);
if(b[i]=='1')
{
p->pf[0]=a[i][0];
p->pf[1]=a[i][1];
p->pf[2]=a[i][2];
p->SA=0;
last->next=p;
last=p;
}
else
{
p->SA=2*a[i][1];
p->pf[0]=a[i][2];
p->pf[1]=a[i][1];
p->pf[2]=a[i][0];
last->next=p;
last=p;
}
}

else
{if((jj[i]=='1')&&(b[i]=='1'))
{
CreateNode(p);
p->SA=2*a[i][1];
p->pf[0]=a[i][2];
p->pf[1]=a[i][1];
p->pf[2]=a[i][0];
last->next=p;
last=p;
}
else

{if((jj[i]=='0')&&(b[i]=='1'))
{
CreateNode(p);
p->pf[0]=a[i][0];
p->pf[1]=a[i][1];
p->pf[2]=a[i][2];
p->SA=0;
last->next=p;
last=p;
}
else
{if((jj[i]=='1')&&(b[i]=='0'))
{
CreateNode(p);
p->pf[0]=1;
p->pf[1]=1;
p->pf[2]=1;
p->SA=0;
last->next=p;
last=p;
}
else

{
CreateNode(p);
p->pf[0]=1;
p->pf[1]=1;
p->pf[2]=1;
p->SA=0;
last->next=p;
last=p;
}
}
}
}
}
last->next=NULL;
return h;

}
用gdb调试出现:
Program received signal SIGSEGV, Segmentation fault.
0x080491c4 in Crt (n=12, b=0x3e680000

, jj=0x804dfd8 "200111101100") at unconsider2.c:231
if(b[i]=='1')
根据gdb的提示信息说是b数组越界访问,但总找不出具体错误在哪,还请大神指教!
  • 写回答

2条回答 默认 最新

  • threenewbee 2015-01-17 07:20
    关注

    有没有为node next等分配内存,指针和数组有没有越界。
    你可以上传完整的源代码到codepad.org,并且将链接贴出来,好帮你调试。

    评论

报告相同问题?

悬赏问题

  • ¥15 NAO机器人的录音程序保存问题
  • ¥15 C#读写EXCEL文件,不同编译
  • ¥15 MapReduce结果输出到HBase,一直连接不上MySQL
  • ¥15 扩散模型sd.webui使用时报错“Nonetype”
  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置