这是我的代码。我正在尝试制作 LRU 替换器,下面的代码是用 frame_id 驱逐一个框架。
我使用迭代器迭代 cache_list_(std::list
auto LRUKReplacer::Evict(frame_id_t *frame_id) -> bool {
std::lock_guard<std::mutex> lock(latch_);
// .....
for (auto id = cache_list_.begin(); id != cache_list_.end(); id++) {
if (is_evictable_.count(*id) == 0U) {
continue;
}
*frame_id = *id; // warning:The address of the local value may escape the fubction
cache_list_.remove(*id);
use_count_[*frame_id] = 0;
curr_size_--;
is_evictable_.erase(*frame_id);
return true;
}
// .....
}
为什么我会收到此警告,我该如何解决?