我正在尝试查看我的自定义字典以查找给定的 const Key&。找到 Key 后,需要将匹配的 Value 作为 const Value* 而不是 Value 返回。目前,我的代码可以编译但不会运行,因为它由于内存泄漏而崩溃,所以我什至不确定代码是否按预期工作。
我试图删除我的临时指针,但它似乎不起作用。也许有更好的方法来完成我想做的事情?
mTable 是 pairs(key, value) 列表的集合
const Value* Find(const Key& key) {
/*int bucket = mHashFunc(_key);*/
const Value* temp = nullptr;
for (auto listIter = mTable[0].begin(); listIter != mTable[0].end(); ++listIter) {
if (listIter->key == key) {
temp = new Value(listIter->value);
}
}
return temp;
delete temp;
}
看来这段代码片段中的内存分配
if (listIter->key == key) {
temp = new Value(listIter->value);
}
是多余的。
return语句后还有这个语句
delete temp;
永远无法控制。它应该被删除。
随便写
if (listIter->key == key) {
temp = &listIter->value;
}