写了一个队列,结果初始化的时候就遇到问题了,吧程序简化了一下,求问大神
#include <stdio.h>
#include <stdlib.h>
struct PCB_type
{
int pid ;
int state ;
int cpu_time ;
};
typedef struct QNode
{
struct PCB_type PCB;
struct QNode * next;
}QNode;
typedef struct
{
QNode * front;
QNode * rear;
}LinkQuene;
int main()
{
QNode *Q = (QNode*)malloc(sizeof(QNode));
LinkQuene *ready;
ready->front = ready->rear = Q; //到这里就无法执行
Q->PCB.pid = 1;
printf("%d\n",ready->front->PCB.pid);
return 0;
}
ready没有分配空间,它指向的是内存中的一个未知区域,你直接->试图取出它的成员变量就会出现异常
#include <stdio.h>
#include <stdlib.h>
struct PCB_type
{
int pid ;
int state ;
int cpu_time ;
};
typedef struct QNode
{
struct PCB_type PCB;
struct QNode * next;
}QNode;
typedef struct
{
QNode * front;
QNode * rear;
}LinkQuene;
int main()
{
QNode *Q = (QNode*)malloc(sizeof(QNode));
LinkQuene *ready = (LinkQuene *)malloc(sizeof(LinkQuene));
ready->front = ready->rear = Q; //到这里就无法执行
Q->PCB.pid = 1;
printf("%d\n",ready->front->PCB.pid);
return 0;
}
LinkQuene *ready;
你给这个ready分配空间了没
没有吧
指针是存储地址的东西
说白了通过指针去访问内存
操作指针之前必须要给指针开辟对应的地址啊
按你的定义ready应该是指向结构体的指针,但是它现在仅仅是指向随机内存的指针,还没有明确指向的结构体。
ready没有分配空间............