C++/g++ cygwin_exception::open_stackdumpfile: Dumping stack-trace *.exe.stackdump

Hier ist mein main in Airport.cpp:

#include <iostream>
#include "Airport_Queue.h"
#include "Airplane.h"
#include <stdlib.h>

int main(){

    Airplane *b = new Airplane(true);
    (*b).come();
    (*b).go();
    std::cout << "........." << std::endl;
    Airport_Queue *landing_queue = new Airport_Queue(5);
    Airplane *a0 = new Airplane(true);
    (*landing_queue).enqueue(a0); //error here
    //(*landing_queue).dequeue();

return 0;

Dies ist mein Airport_Queue.cpp

#include "Airport_Queue.h"
Airport_Queue::Airport_Queue(unsigned n){
    Airplane** a = new Airplane*[n];
    capacity = n;
    size = 0;
    head = tail = 0;
}
Airport_Queue::~Airport_Queue(){
    for (size_t i = 0; i < size; i++){
        delete a[i];
    }
    delete [] a;
}
void Airport_Queue::enqueue(Airplane* airplane){
    if (!(*this).isFull()){
        a[tail] = airplane;
        (*a[tail]).come();
        tail = (tail+1) % capacity;
        size++;
    }
    else{
        std::cerr << "Queue is full." << std::endl;
    }
}
Airplane* Airport_Queue::dequeue(){ 
    if (!(*this).isEmpty()){
        size_t x = head;
        (*a[head]).go();
        head = (head+1) % capacity;
        size--;
        return a[x];
    }
    else{
        std::cerr << "Queue is empty." << std::endl;
        return NULL;
    }   
}
bool Airport_Queue::isEmpty(){
    if (size == 0)
        return true;
    else
        return false;
}
bool Airport_Queue::isFull(){
    if (size == capacity)
        return true;
    else
        return false;
}
int Airport_Queue::getSize(){
    return size;
}

Ich habe auch eine Klasse namens Flugzeug. Der Befehl, den ich verwenden, zu kompilieren und zu verknüpfen ist
g++ -std=c+11 -Wall -g -o airport Airport.cpp Airplane.cpp Airport_Queue.cpp
Wie kann ich dieses Problem beheben Laufzeitfehler? Der Fehler ist, wenn ich Anrufe enqueue. Dann bekomme ich

4 [main] - Flughafen 3796 cygwin_exception::open_stackdumpfile: Dumping stack-trace zu Flughafen.exe.stackdump

Bitte. Und ich danke Ihnen.

  • Mach das nicht zu deinem post. Wenn Sie Lesen meine Antwort, es wird keinen Sinn mehr. Was Sie tun sollten, ist (1) Halten Sie den ursprünglichen code und fügen Sie den aktualisierten code an der Unterseite, oder (2) Erstellen Sie eine komplett neue post mit den aktualisierten code.
InformationsquelleAutor Myath | 2015-02-24
Schreibe einen Kommentar