例如这样就会出现错误: free(): invalid pointer:
typedef std::shared_ptr<int> intptr;
int a = 0;
intptr p(&a);
shared_ptr的初始化只能以上面的代码为例:
intptr p(new a(0));
个人的理解就是在释放内存是会重复释放,比如先释放了a所指代的内存,然后释放p所指代的内存,此时p所指代的内存已经被释放过了.
例如这样就会出现错误: free(): invalid pointer:
typedef std::shared_ptr<int> intptr;
int a = 0;
intptr p(&a);
shared_ptr的初始化只能以上面的代码为例:
intptr p(new a(0));
个人的理解就是在释放内存是会重复释放,比如先释放了a所指代的内存,然后释放p所指代的内存,此时p所指代的内存已经被释放过了.