-1
我需要在我的程序中创建一个链表。在我的程序中,列表被分配在malloc()的堆上,比我试图访问它,但我得到了一个segmetation错误;分配链表后分段错误
编辑:我得到SIGSEGV在这条线 “而((节点 - >节点类型== TYPE_END_LIST)!){”
struct dagNode *createList(int k);
struct dagNode *newNodeXInterval(int type, int val);
struct dagNode *createList(int k){
struct dagNode *head, *node;
printf("\nList %d = ", k);
head = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,1));
node = head;
int i;
for (i=1; i<LENGTH_OF(k); i++){
node->next = newNodeXInterval(TYPE_XTEST, getRightPointOf(k,i));
node = node->next;
node->next = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,i+1));
node = node->next;
}
node = newNodeXInterval(TYPE_END_LIST, 0);
node = head; // i think that here there is the error
printf("%d", node->val); i=0;
while(!(node->nodeType == TYPE_END_LIST)){
printf("%d ", i);
node = node->next;}
return head;}
struct dagNode *newNodeXInterval(int type, int val){
struct dagNode *node = (struct dagNode *) malloc(sizeof(struct dagNode));
if (type == TYPE_EDGE_OR_GAP){
*node = (struct dagNode) {(val<0)? TYPE_GAP:TYPE_EDGE, val, NULL, NULL, NULL};
}
else{
*node = (struct dagNode) {type, val, NULL, NULL, NULL};
}
return node; }
主叫功能将获得列表的头部。
请缩小这个范围 - 在哪条线上出现分段故障? – 2012-02-09 14:31:08
如果你有一个SEGV,大概你可以得到一个核心并且看到_exactly_它死了的地方? – Useless 2012-02-09 14:31:36