我无法弄清楚造成这种内存泄漏的原因(我假设发生了什么事情。)
我有几个课程,所以我会发布每个课程的构造函数和析构函数。错误消息表明损坏是由stock.cpp(20)分配的内存引起的,这是行
symbol(new char[]),
构造函数和析构函数如下
hashmap.cpp
HashMap::HashMap(int capacity) :
slots(new Slot[capacity]),
capacity(capacity),
nStocks(0),
isEmpty(true)
HashMap::~HashMap(void)
{
delete[] slots;
}
stock.cpp
Stock::Stock(char const * const symbol, char const * const name, int sharePrice, Date priceDate):
symbol(new char[strlen(symbol)+1]),
name(new char[strlen(name) + 1]),
sharePrice(sharePrice),
priceDate(priceDate),
isEmpty(false)
{
strcpy(this->symbol, symbol);
strcpy(this->name, name);
}
Stock::Stock(void) :
symbol(new char[]), //this is where the memory allocation that causes the error occurs
name(new char[]),
isEmpty(true)
Stock::~Stock(void)
{
delete[] symbol;
delete[] name;
}
如您所见,在调用析构函数时,将销毁在stock.cpp(20)中分配的数组。那是怎么回事?
编辑:这是完整的错误消息
调试错误!
程序:asnmt03 / Debug / asnmt03.ext
HEAP CORRUPTION DETECTED:在0x004E51F8的正常块(#168)之后 CRT检测到应用程序在堆缓冲区结束后写入内存
在stock.cpp分配的内存(20)