Этот метод выдает сигнал SIGSEGV, несмотря на то, что ничего не меняется, и я его не понимаю [закрыто]C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Этот метод выдает сигнал SIGSEGV, несмотря на то, что ничего не меняется, и я его не понимаю [закрыто]

Сообщение Anonymous »

Я хотел реализовать собственную отсортированную очередь для решения проблемы, вставка работает нормально, но по какой-то причине, когда я извлекаю что-то, что-то ломается.

Код: Выделить всё

    class Queue{
public: Queue(Queue* i, edge* c): next{i}, cur{c}{}
public: edge* cur;
public: Queue* next;

public: void pop(){
if(next==0){cur=0; return;} //Tried changing this already, didn't work
Queue* a =next;
next=next->next;
cur=next->cur;
free(a);
}
//insert logic
}

//Other stuff

printf("NextCur: %d", q.next->cur->s); //This resolves fine
q.pop();
printf("NextCur: %d", q.cur->s);  //This decides to die
Я понятия не имею, что может быть причиной этого. В частности, он не нарушает все значения, а только некоторые. Края хранятся отдельно, поэтому они не должны быть затронуты.
Обратите внимание, что это не тот случай, когда выталкивается последний элемент - как видно из printf, в списке есть еще один элемент. Я убедился, что проблема не в предложении if.

Подробнее здесь: https://stackoverflow.com/questions/798 ... ont-get-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»