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

qlckcl4x  于 2023-05-02  发布在  其他
关注(0)|答案(1)|浏览(115)

我试图在自定义字典中查找给定的const Key&。一旦找到Key,匹配的Value需要作为const Value* 而不是Value返回。目前,我的代码将编译,但不运行,因为它崩溃,由于内存泄漏,所以我甚至不确定代码的工作作为预期。
我试图删除我的临时指针,但似乎不起作用。也许有更好的方法来完成我想做的事情。
mTable是一个对(键,值)列表的集合

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;
    }
6pp0gazn

6pp0gazn1#

这段代码中的内存分配

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

是多余的。
在return语句之后也是这个语句

delete temp;

从来没有得到控制。它应该被删除。
写吧

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

相关问题