<分区>
我知道这是一个很常见的问题,但我不理解相关问题中的代码示例(太长,太复杂)。所以,这是我的简单代码片段:
#include <iostream>
#include <memory>
#include <vector>
using namespace std;
int main(){
vector<int> v({1,2,3,4,5});
shared_ptr<vector<int>> v_ptr(&v);
cout << (*v_ptr)[2] << endl;
}
现在,这个简短的代码片段造成了内存泄漏。我认为这是由于在破坏 shared_ptr 之前破坏了 vector 造成的。但是,我不明白如何相应地销毁指针。简单地尝试 reset() 是行不通的,那么我该怎么办,为什么会出现内存泄漏?
请不要问我为什么需要这个,我是智能指针的新手并试图了解如何使用它们。这个例子独立于我的工作,但是,我想在将来避免内存泄漏,所以这个问题实际上可能有帮助。提前致谢!