1. 程式人生 > >C++報錯:讀取位置 0xFFFFFFFFFFFFFFFF 時發生訪問衝突

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;
}