我创建了一个迭代器,当解引用该迭代器时返回一个指向动态分配的 std::pair
的 std::shared_ptr
的副本(在迭代器内部使用 new
创建)。 迭代器正常运行,但是想要在循环结束时释放 pair
,以防止内存泄漏。
for (auto it = parser.begin(); it != parser.end(); ++it) {
shared_ptr<pair<string, string>> record = *it;
// Analysis of pair
// delete pair with delete, or reset
}
然而,我在释放 pair
上遇到了困难。我已经尝试过 delete record
、delete *record
和 record.reset()
,但是这些方法都不能通过编译。
[const] auto& record = **it;
来获取对“pair”的引用,这将比两次操作共享指针中的原子使用计数更简单和更快。 - Tony Delroy