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 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?