내 프로그램이 중단되고 왜 작동하지 않습니다. 난 그냥 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;
}
이클립스 디버거를 사용하여, 그것은 보인다는에 충돌 할 새로운 - > 머리 = 임시. 누군가가 내 오류를 찾을 수 있기를 바랍니다.
당신은'new'을위한 공간을 결코 할당하지 않았습니다. – Barmar
gcc 또는 g ++를 사용하여 이것을 컴파일하고 있습니까? – hyades
@hyades gcc가되어야합니다. g ++은 C++ 키워드이기 때문에'new'라는 이름의 변수를 barf로 바꿀 것입니다. – duskwuff