尝试使用键查找匹配值(C++)

问题描述 投票:0回答:1

我正在尝试查看我的自定义字典以查找给定的 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;
    }
c++ dictionary pointers memory-leaks function-definition
1个回答
0
投票

看来这段代码片段中的内存分配

if (listIter->key == key) {
    temp = new Value(listIter->value);
}

是多余的。

return语句后还有这个语句

delete temp;

永远无法控制。它应该被删除。

随便写

if (listIter->key == key) {
    temp = &listIter->value;
}
© www.soinside.com 2019 - 2024. All rights reserved.