Hallo, ich bin neu in Zeigern und dynamischen Speicher. Das Programm soll ein Array-basierter Stack sein. Ich brauche Hilfe mit einem Fehler, der auftritt, wenn ich versuche, Speicher zu einer Zeigervariablen zuzuordnen, die _pArr in der H-Datei aufgerufen wird. Wenn ich versuche, ein neues Array mit new double[]
zu erstellen, erhalte ich eine "nicht lesbare Erinnerung" -Fehlermeldung, wenn ich den Code debugge. In dem Code unten habe ich ein neues Array in der .cpp-Datei erstellt und dann auf den Zeiger _pArr
kopiert, aber ich bekomme immer noch den gleichen Fehler.Unlesbarer Speicher, wenn ich Zeiger-Array in C++ erstellen
class CStack{
public:
Stack(void);
~Stack(void);
.
.
.
private:
int _capacity=NULL;
int _size=0;
double* _pArr;
}
CStack::CStack(void)
{
if (_capacity == 0){
_capacity = 10;
}
else{
_capacity = _capacity * 2;
}
double* arr;
arr = new double [_capacity]
_pArr=arr;
delete[] arr;
}
Warum tritt dieser Fehler auf und wie kann ich ihn beheben?
Was ist 'arr' und warum löschen Sie es im Konstruktor? Ist der Klassenname 'Stack' oder' CStack'? – Barmar
Was ist der Sinn des 'if (_capacity == 0)' Tests? Da dies ein neu erstellter Stapel ist und die Klassendeklaration ihn auf "0" initialisiert, ist er immer "0". – Barmar
Off topic, aber nicht 'NULL' für' int' verwenden. –