C 从链表中退出队列时如何释放内存?
我使用C 从链表中退出队列时如何释放内存?,c,queue,malloc,C,Queue,Malloc,我使用malloc()函数在C中创建队列,问题是当我使用dequeue()函数时,我留下了一个未引用的元素。我必须每秒多次使用此函数,因此我想知道处理此函数的最佳方法,或者是否有比使用malloc()更好的方法。这是两个功能: void enqueue(struct Queue *q, char c){ //adds an element to the queue struct Member* m = malloc(sizeof *m);//in order to make m glob
malloc()
函数在C中创建队列,问题是当我使用dequeue()
函数时,我留下了一个未引用的元素。我必须每秒多次使用此函数,因此我想知道处理此函数的最佳方法,或者是否有比使用malloc()
更好的方法。这是两个功能:
void enqueue(struct Queue *q, char c){
//adds an element to the queue
struct Member* m = malloc(sizeof *m);//in order to make m global
if(!m){ perror("malloc");exit(EXIT_FAILURE);}
if(q->length == 0){
m->ch = c;
q->first = m;
q->last = m;
}else{
m->ch = c;
q->last->next = m;
q->last = m;
}
q->length++;
}
char dequeue(struct Queue *q){
//returns the first element of the queue an delete it
char c;
if(q->length >0){
q->length--;
c = q->first->ch;
q->first= q->first->next;
//CLEAR THE UNREFERENCED VARIABLE
}
return c;
}
谢谢
编辑:
以下是我正在使用的结构:
typedef struct Queue{
int length;
struct Member *first;
struct Member *last;
}Queue;
typedef struct Member{
char ch;
struct Member *next;
}Member;
首先将
未引用变量
存储到临时变量
,以便在更改队列的第一个节点后可以释放它
//returns the first element of the queue and delete it
char dequeue(struct Queue *q){
struct Member* temp = q->first;;
char c;
if(q->length >0){
q->length--;
c = q->first->ch;
q->first= q->first->next;
free(temp);
}
return c;
}
你可以查看更多关于免费的信息
为什么不免费呢?