【发布时间】:2017-07-06 02:50:01
【问题描述】:
我有一个包含 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;做什么? -
您将
m_number分配给new,但在下一行您将其重新分配给本地数组。 -
如果您稍后使用
m_number,这不仅是内存泄漏,而且是未定义的行为 -
“我遇到的问题是发生编译器错误并声明内存未分配”是什么意思?你怎么看?
标签: c++ memory-management destructor new-operator delete-operator