Код: Выделить всё
class MyCircularQueue {
private :
int rear, front, size;
int *arr;
public:
MyCircularQueue(int k) {
int rear = -1;
int front = -1;
int size = k;
int *arr = new int[size];
}
bool enQueue(int value) {
if((front==(rear+1)%size) ){
return false;
}
else if(front==-1){
front = rear = 0;
}
else {rear = (rear+1)%size;}
arr[rear] = value;
return true;
}
bool deQueue() {
if(front== -1 && rear==-1){
return false;
}
if(front==rear){
front = rear = -1;
return true;
}
if(front==size-1){
front = 0;
return true;
}
front++;
return true;
}
int Front() {
if(front==-1){
return -1;
}
return arr[front];
}
int Rear() {
if(front==-1){
return -1;
}
return arr[rear];
}
bool isEmpty() {
return front==-1;
}
bool isFull() {
return front==(rear+1)%size;
}
};
Строка 68: символ 16: ошибка выполнения: загрузка неправильно выровненного адреса 0xbebebebdb9b9b9c6 для типа 'int', для которого требуется выравнивание по 4 байтам (solution.cpp)
0xbebebebdb9b9b9c6: примечание: здесь указывает указатель
СВОДКА: UndefinedBehaviorSanitizer: undefined-behavior Solution.cpp:68:16
[img]https: //i.sstatic.net/pB35aJpf.png[/img]
Это была попытка решения проблемы Leetcode 622. Проблема заключается в реализации циклической очереди. Но строка arr[rear]=value выдает ошибку времени выполнения.
Подробнее здесь: https://stackoverflow.com/questions/786 ... time-error