mur*_*phy 2 c++ smart-pointers vector c++11
我正在尝试实现一个可以将智能指针推送到向量中的类:
#include <memory>
#include <vector>
class A {
public:
void pushme(std::vector<std::shared_ptr<A>> & vec) {
vec.push_back(std::shared_ptr<A>(this));
}
};
int main() {
A test;
std::vector<std::shared_ptr<A>> vec;
test.pushme(vec);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这很好地编译,但在执行时我得到一个free(): invalid pointer错误.请帮我理解这里发生了什么.
A test;
Run Code Online (Sandbox Code Playgroud)
这在函数本地范围内声明了一个对象.超出范围时,对象将自动释放.
只能new管理动态范围(使用)创建的对象std::shared_ptr.这就是整个目的std::shared_ptr- delete当一个对象的最后一个共享指针消失时自动调用.你只能delete分配一些东西new.
| 归档时间: |
|
| 查看次数: |
1226 次 |
| 最近记录: |