【发布时间】:2018-03-27 18:49:45
【问题描述】:
正如我在标题中所说,我正在尝试从 数组 生成一个链表。 P 是一个 结构,其中包含 float x 和一个指向列表中下一个元素的 指针。 gen_list 函数一被调用,第一行代码“first->x = V[0]”就返回了分段错误,这是我从调试器中得到的:
Program received signal SIGSEGV, Segmentation fault.
0x00000000004007f6 in gen_list (V=0x602010, n=10000, first=0x601068 <first>)
at main.c:46
46 (*first)->x = V[0];
(gdb)
我好像找不到问题,请帮忙!!
这里是重现错误所需的最少代码:
typedef struct Popis {
float x;
struct Popis *next;}P;
P *first;
int main(){
float v[10];
v[0] = 1;
first->x = v[0];
}
我的代码:
P* gen_list(float V[], int n, P *first) {
first->x = V[0];
P *T = NULL;
P *new = NULL;
T = first;
t1 = clock();
for (int i = 1; i < n; i++) {
new->x = V[i];
T->next = new;
T = new;
}
T->next = NULL;
t2 = clock();
printf("\nTime for creation of linked list is: %dms", t2 - t1);
return first;}
【问题讨论】:
-
该错误可能在您的代码中的其他地方。尝试通过valgrind 运行它。如果你踩到了你不应该踩到的内存,它会告诉你。
-
如果您在调试器中,请使用它。打印
first和V的值。 -
我添加了最小的。
-
你需要了解对象和指针。并正确格式化您的代码。
标签: c function linked-list segmentation-fault