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