【发布时间】:2014-11-30 21:36:45
【问题描述】:
此方法正在生成分段错误。该方法旨在返回列表指定位置的值。该列表是多项式列表。它应该返回一个多项式。我尝试在它上面使用 gdb,但它只是告诉我它是什么方法。
llink* get_specific(llist* node)
{
struct link * poly;
int i;
printf("Which polynomial do you want: ");
scanf("%d",&i);
llist* current;
current = node;
int j;
llist* temp;
for (j = 1;j < i;j++)
current = current->next;
poly = current->poly;
return poly;
}
编辑:用 j 修复错误并且不再分配内存后,此代码第一次运行良好,但如果我第二次运行它会出现错误
编辑2:
for (j = 1;j < i;j++)
current = current->next;
当它访问for循环内的行时会导致分段错误。如果用户输入为 1,则运行正常,但如果是其他任何内容,则会出现故障
【问题讨论】:
-
您的指针/malloc 使用不正常。您的调试器使用、scanf 等也不是...
-
Gdb 会告诉你确切的行号(和违规指令)。使用调试信息 (-g) 进行编译。
-
gdb 没有给我一个确切的行号,我用 -g.gdb 编译在 get_specific () 中给我返回 #0 0x08048c4d #1 0x08048df3 in main ()
标签: c segmentation-fault