Destructor verursacht einen Segmentation Fault

Ich weiß, dass es viele ähnliche Fragen gibt, aber ich habe nicht gefunden was hilft noch. Ich beschäftige mich jetzt schon seit mehreren Stunden jetzt, und es macht mich verrückt. Ich bekomme einen segmentation fault, wenn ein Destruktor wird aufgerufen, eine variable, die erstellt wurde, indem der copy-Konstruktor.

//Copy Constructor
Stack::Stack(const Stack &aStack)
{
   size = 0; //this is incremented as new items are pushed onto the stack.
   cap= aStack.cap;
   items = new int[aStack.cap]();
   for (int i = 0; i < aStack.size; i++)
      this->push(aStack.items[i]);  //Adds an item if not full and increments size
      //I have also tried: items[i] = aStack.items[i]
}

//Destructor
Stack::~Stack()
{
   cap= 0;
   size= 0;
   delete [] items;
   items = NULL;
}

Bekomme ich das Gefühl, ich mache die Kopie-Konstruktor falsch, aber ich kann nicht herausfinden, was es ist.

Sollten Sie keine Schleife, um die Größe anstelle der top-element? Und tun stacks haben in der Regel schwenkbare Elemente?
Und top ist nie für das neue Objekt in den copy-Konstruktor.
Warten Sie, warum ist top keine Funktion (ich würde behaupten das gleiche für size auch wenn es nicht ein)?
Sorry, ich sollte angegeben haben. Ich Baue ein stack aus einem array. Also immer wenn Sie sehen, das Wort stack, es ist die Klasse "stack", und es enthält einen dynamisch zugewiesenen Arrays.
Versuchen Sie, die Initialisierung size Mitglied vor Aufruf push()

InformationsquelleAutor Atrus | 2013-05-07

Schreibe einen Kommentar