01/10/2018, 17:33

Code Queue bị Lỗi Access Violation Writing Location

Chào mọi người! Mình có đoạn code sau, khi mình chạy trên máy của mình thì thỉnh thoảng có lỗi làm màn hình console đứng một lát, khi debug thì mình thấy lỗi như trong ảnh. Mình có gửi sang máy khác chạy thử thì một máy lỗi liên tục, một máy chạy bình thường. Mình không hiểu tại sao, mong bạn nào biết có thể trả lời giúp mình. Mình cảm ơn!

#include<iostream>

class Queue {
private:
	int rear, front, size;
	unsigned capacity;
	int *arr;
public:
	Queue(unsigned capacity);
	~Queue();
	bool isEmpty();
	bool isFull();
	bool enQueue(int data);
	bool deQueue();
	int rearQueue();
	int frontQueue();
};

Queue::Queue(unsigned capacity) {
	this->size = 0;
	this->front = 0;
	this->capacity = capacity;
	this->rear = capacity - 1;
	this->arr = new int(this->capacity);
}

Queue::~Queue() {
	delete[] this->arr;
}

bool Queue::isEmpty() {
	return size == 0;
}

bool Queue::isFull() {
	return this->size == this->capacity;
}

bool Queue::enQueue(int data) {
	if (this->isFull()) return false;
	
	this->rear = (this->rear + 1) % (this->capacity);

	this->arr[this->rear] = data;
	this->size++;
	std::cout << "Enqueue: " << data << std::endl;
	return true;
}

bool Queue::deQueue() {
	if (this->isEmpty()) return false;
	this->front = (this->front + 1) % (this->capacity);
	this->size--;
	return true;
}

int Queue::frontQueue() {
	if (this->isEmpty()) return -1;
	return this->arr[this->front];
}

int Queue::rearQueue() {
	if (this->isEmpty()) return -1;
	return this->arr[this->rear];
}

int main() {
	/*Queue *queue = new Queue(5);
	queue->enQueue(10);
	queue->enQueue(20);
	queue->enQueue(30);
	queue->enQueue(40);
	queue->enQueue(50);
	queue->enQueue(60);
	queue->deQueue();
	queue->enQueue(70);
	std::cout << queue->frontQueue() << std::endl;
	std::cout << queue->rearQueue() << std::endl;*/

	Queue queue(5);
	queue.enQueue(10);
	queue.enQueue(20);
	queue.enQueue(30);
	queue.enQueue(40);
	queue.enQueue(50);
	queue.enQueue(60);
	queue.deQueue();
	queue.enQueue(70);
	std::cout << queue.frontQueue() << std::endl;
	std::cout << queue.rearQueue() << std::endl;
}

Phạm Vân viết 19:49 ngày 01/10/2018

đã giải quyết được, sai dấu ngoặc () với [[ :(((

Bài liên quan
0