C ++ 11,泄漏内存

时间:2015-08-26 04:29:51

标签: c++ xcode c++11 memory instruments

我有一个Xcode仪器检测到的情况

std::vector<UserID_t> functions::getUserIds() const {
    static_assert(sizeof(int64) == sizeof(uint64_t), "size is not matched");
    auto object = AAAAA::BBBB::ValueObject<int64 *>(_hash->getValue((nByte)Key::USER_IDS));
    auto size = object.getSizes();
    std::vector<UserID_t> ret(*size);
    auto pVal = object.getDataCopy();
    for (int index = 0; index < *size; index++) {
        ret[index] = *pVal;
        ++pVal;
    }
    return ret;
}

该工具向我显示返回后未释放“ret”中的元素。 但我认为int64是一个标量变量,我不需要释放它们。 是吗?

我使用Xcode 6.3.2

1 个答案:

答案 0 :(得分:3)

使用带有指针的auto(假设它们是指针而不是带有重载*运算符的某个类)会让事情变得混乱。我认为错误可能在于您正在创建一个&#34;副本&#34;在object.getDataCopy()中,返回指向它的指针,而不是在返回functions::getUserIds()

之前删除它