Ich habe eine Klasse, die einen Zeiger std :: uint_8 enthält, und der Destruktor sollte aufgerufen werden, um den zugewiesenen Speicher zu löschen. Das Problem, das ich habe ist, dass ein Compiler-Fehler auftritt und besagt, dass der Speicher nicht zugewiesen wurde, aber ich weiß, dass ich es in meinem Standardkonstruktor zugewiesen. Hier ist mein Standard-Konstruktor:Destructor löscht zugewiesenen Speicher nicht
BigInteger::BigInteger() {
unsigned char aArray [4];
aArray[0] = 0;
m_number = new unsigned char[4]
m_number = aArray;
m_digitCount = 0;
m_sizeReserved = 4;
}
und hier ist mein destructor:
BigInteger::~BigInteger() {
delete [] m_number;
}
Was erwarten Sie 'm_number = aArray;' zu tun? – tkausl
Sie ordnen 'm_number' mit' new' zu, aber in der nächsten Zeile weisen Sie es dem lokalen Array zu. –
Was ist nicht nur ein Speicherverlust, sondern ist undefiniertes Verhalten, wenn Sie später 'm_number' verwenden – NathanOliver