【发布时间】:2012-06-12 01:29:29
【问题描述】:
我对链表有疑问。我有两个结构:
struct ekstra
{
char isim[256];
int deger;
struct ekstra *sonra;
};
struct node
{
char name[256];
int val;
struct ekstra *next;
};
我有这些:
struct ekstra *tmp;
struct node dizi[12];
在我的代码中某处
tmp = dizi[k].next;
tmp=tmp->sonra;
如果我这样做:
tmp = malloc(sizeof(struct ekstra));
没有问题。
但如果我这样做:
dizi[k].next->sonra = malloc(sizeof(struct ekstra));
我得到一个 SegFault。为什么会这样?
【问题讨论】:
-
您最好在调试器的帮助下运行代码。在 linux 上,valgrind 非常适合指出分段错误。此外,在 Windows 上,Visual Studio 调试器非常有用。
-
可能你误用了数组索引
k。请发布完整代码 -
@GeorgeGaál 请不要要求完整的代码,而是可以重现问题的更完整的代码。
-
@Drise 就是说“能够重现问题的最少完整代码量”。我同意 George 的观点,您需要确保 k 在数组的范围内,并确保 next 不为空? GNU 调试器也可用于解决此问题。
-
k 是 0 这里 k 没有问题
标签: c pointers linked-list segmentation-fault