2014-12-27 5 views
0

내 프로그램이 중단되고 왜 작동하지 않습니다. 난 그냥 10 요소의 대기열을 만들려고 노력하고 있습니다. 내 주요 코드 :내 프로그램이 충돌 함

#include "queue.h" 

int main(void){ 

Queue * queue; 

queue = create_q(10); 
return 0; 
} 

내 queue.h 코드 :

#ifndef QUEUE_H_ 
#define QUEUE_H_ 
#endif /* QUEUE_H_ */ 

#include <stdbool.h> /* for bool type */ 
#include <stdio.h> /* for standard IO support */ 
#include <stdlib.h> /* for malloc() and free() functions */ 

typedef struct patient { /* my structure */ 
    char name [20]; 
    char surname [20]; 
    int priority; 
    struct patient * next; /* pointer to next node */ 
}Node; 

typedef struct queue { 
    Node * head; 
    Node * last; 
}Queue; 

Queue * create_q(int size); 

내 queue.c 코드 :

#include "queue.h" 

Queue * create_q(int size){ 

Node * temp, * temp2; 
Queue * new ; 
int i=0,j; 

temp = (Node *) malloc(sizeof(Node)); 
new->head = temp; 
if(temp == NULL){ 
    printf("There is not enough memory to create the %dth Node of your queue",i); 
    for (j=1; j<=i; j++){ 
     new->head = temp->next; 
     free(temp); 
    } 
    return NULL; 
} 
if (temp != NULL){ 
    new->head = temp; 
    for (i=1; i<size; i++){ 
     temp2 = (Node *) malloc(sizeof(Node)); 
     temp->next = temp2; 
    } 
    return new; 
} 
return 0; 
} 

이클립스 디버거를 사용하여, 그것은 보인다는에 충돌 할 새로운 - > 머리 = 임시. 누군가가 내 오류를 찾을 수 있기를 바랍니다.

+1

당신은'new'을위한 공간을 결코 할당하지 않았습니다. – Barmar

+0

gcc 또는 g ++를 사용하여 이것을 컴파일하고 있습니까? – hyades

+0

@hyades gcc가되어야합니다. g ++은 C++ 키워드이기 때문에'new'라는 이름의 변수를 barf로 바꿀 것입니다. – duskwuff

답변

5

새 대기열을 할당하지 않았습니다. 당신은 필요합니다 :

Queue *new = malloc(sizeof(Queue)); 
+0

도와 주셔서 감사합니다! – user3540561

+0

@ user3540561 답변을 수락하는 방법을 알고 계십니까? 이걸 받아주세요. 맞습니다. –

관련 문제