好的,这是关于哈希表的家庭作业,但这是我认为我在早期课程中能够做到的简单事情,我正在撕毁我的头发。教授反应不够快,所以我想我会在这里尝试。
我们有一个股票对象的哈希表。股票对象的创建方式如下:
stock("IBM", "International Business Machines", 2573, date(date::MAY, 23, 1967))
我的构造函数看起来像:
stock::stock(char const * const symbol, char const * const name, int sharePrice, date priceDate): m_symbol(NULL), m_name(NULL), sharePrice(sharePrice), dateOfPrice(priceDate)
{
setSymbol(symbol);
setName(name);
}
和 setSymbol 看起来像这样:(setName 是相同的):
void stock::setSymbol(const char* symbol)
{
if (m_symbol)
delete [] m_symbol;
m_symbol = new char[strlen(symbol)+1];
strcpy(m_symbol,symbol);
}
并且拒绝分配上线
m_symbol = new char[strlen(symbol)+1];
使用 std::bad_alloc。名称和符号已声明
char * m_name;
char * m_symbol;
绝对是 strlen() 误入歧途。而且似乎并非每次都发生。
cout << symbol << strlen(symbol);
正确返回 IBM,然后崩溃