问题截图

C++报错:读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突_内存空间

 问题来源

写队列程序时,分配内存空间时报错。

Q->front = Q->rear = (QueuePtr)malloc(sizeof(QNode));

解决方案

修改Q 的类型,去掉*,不设置指针类型。修改后代码如下:

typedef struct QNode {
char data;
struct QNode *next;
}QNode,*QueuePtr;

typedef struct LinkQueue {
QueuePtr front;
QueuePtr rear;
}LinkQueue;

int InitQueue(LinkQueue &Q) {

Q.front = Q.rear = (QueuePtr)malloc(sizeof(QNode));
if (!Q.front)
{
cout << "空间分配失败" << endl;
exit(OVERFLOW);
}
Q.front = NULL;
return 1;
}