У меня есть класс, который включает в себя указатель std :: uint_8, и деструктор должен вызываться для удаления выделенной памяти. Проблема, с которой я сталкиваюсь, заключается в том, что возникает ошибка complier и указывается, что память не была выделена, но я знаю, что я выделил ее в своем конструкторе по умолчанию. Вот мой конструктор по умолчанию:Деструктор не удаляет выделенную память
BigInteger::BigInteger() {
unsigned char aArray [4];
aArray[0] = 0;
m_number = new unsigned char[4]
m_number = aArray;
m_digitCount = 0;
m_sizeReserved = 4;
}
и вот мой деструктор:
BigInteger::~BigInteger() {
delete [] m_number;
}
Что вы ожидаете от 'm_number = aArray?'? – tkausl
Вы присваиваете 'm_number'' new', но на следующей строке вы назначаете его локальному массиву. –
Это не только утечка памяти, но и неопределенное поведение, если позже вы используете 'm_number' – NathanOliver