Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

Gray-Ice

个人博客兼个人网站

这个问题是当智能指针指向一个变量的时候产生的,因为智能指针会自动释放,变量也会被内存回收,所以这两者冲突了。
虽然最容易的解决方法是直接使用普通指针,但是因为丰富的求知欲,我们就来看一看如何解决这个问题。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <memory>

using namespace std;

void release_ptr(int *ptr)
{
}

int main(void)
{
int a = 30;
shared_ptr<int> p1(&a, release_ptr);
cout << *p1 << endl;
return 0;
}

这个原理其实就是定义了一个删除器来代替掉智能指针默认的自动释放,当智能指针不再自动释放的时候,问题也就解决了,int变量a的内存将由自动回收清理掉。

本篇完。

评论



愿火焰指引你