我有一个包含std :: uint_8指针的类,应该调用析构函数来删除分配的内存。我遇到的问题是发生编译器错误,并指出内存未分配,但我知道我将其分配在我的默认构造函数中。 这里是我的默认构造函数:析构函数不删除分配的内存
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
您用'new'分配'm_number',但在下一行重新分配给本地数组。 –
这不仅是一个内存泄漏,但如果您稍后使用'm_number',它是未定义的行为 – NathanOliver