当前位置: 首页 > news >正文

广州icp网站测评企业营销策划实训

广州icp网站测评,企业营销策划实训,多少钱需要交个人所得税,北京网站建设有哪些1. 起源 c++ 把内存的控制权对开发人员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是这样也会引发一些问题,也就是普通指针的隐患: 1.1 野指针 出现野指针的有几个地方 : 指针声明而未初始化,此时指针的将会随机指向内存已经被释放…

1. 起源

c++ 把内存的控制权对开发人员开放,让程序显式的控制内存,这样能够快速的定位到占用的内存,完成释放的工作。但是这样也会引发一些问题,也就是普通指针的隐患:

1.1 野指针

出现野指针的有几个地方 :

  1. 指针声明而未初始化,此时指针的将会随机指向
  2. 内存已经被释放、但是指针仍然指向它。这时内存有可能被系统重新分配给程序使用,从而会导致无法估计的错误
	// 野指针int * p ;cout << "p : " << p <<   endl;int * p2 = new int(20);delete p2;cout << "p2 : " << p2 <<   endl;

1.2 重复释放

释放已经释放过的内存,或者释放已经被重新分配过的内存,就会导致重复释放错误.

//2. 重复释放int * p3 = new int(30);delete p3;delete p3;  //重复delete 会报错。cout << "p3 : " << p3 <<   endl;

1.3 内存泄漏

不再使用的内存,并没有释放,或者忘记释放,导致内存没有得到回收利用。 忘记调用delete

//3. 忘记释放了int * p4 = new int(40);

2. 简介

C++智能指针是一种特殊类型的指针,其作用是管理动态分配的内存资源,以提供更安全和方便的内存管理。智能指针通过封装原始指针,并在适当的时候自动释放内存,从而避免内存泄漏和悬挂指针等问题。

c++11标准用 unique_ptr | shared_ptr | weak_ptr 等指针来自动回收堆中分配的内存。智能指针的用法和原始指针用法一样,只是它多了些释放回收的机制罢了。

2.1 原理

智能指针位于memory 头文件中,所以要想使用智能指针,还需要导入这个头文件 #include<memory>

int * p = new int(10);
unique_ptr<int> up(p);

智能指针其实是一个类 , 它里面能够包装原始指针。

template <typename _Tp, typename _Dp = default_delete<_Tp> >
class unique_ptr{}

完整代码:

#include <iostream>
#include<memory>using namespace std;class Abstract{
public:Abstract(){cout <<"Abstract构造" <<endl;}~Abstract(){cout <<"Abstract析构" <<endl;}
};void Construct_pointer(){Abstract * A = new Abstract;unique_ptr<Abstract> up0 (A);}int main() {cout <<"----------------------" <<endl;Construct_pointer();cout <<"----------------------" <<endl;return 0;
}

unique_ptr 的析构:

     ~unique_ptr() noexcept{auto& __ptr = std::get<0>(_M_t);if (__ptr != nullptr)get_deleter()(__ptr);__ptr = pointer();}
  • 总结:
  1. 使用智能指针的类在栈内存创建的对象,来包装原始指针。
  2. 当智能指针的对象销毁了之后, 顺便也会销毁原始指针。
  3. 智能指针并不是指针,只是包装了指针的类而已。
unique_ptr<Abstract> *up  = new unique_ptr<Abstract>(A);
delete up; //报错

使用智能指针的类在堆内存创建的对象,来包装原始指针,会报错。

3. 智能指针

智能指针把裸指针包装起来,在构造函数里初始化,在析构函数里释放。这样当对象失效销毁时,C++ 就会自动调用析构函数,完成内存释放、资源回收等清理工作。它实践了 RAII(Resource Acquisition Is Initialization),包装了裸指针,而且因为重载了 *-> 操作符,用起来和原始指针一模一样。

3.1 unique_ptr

unique_ptr 是一个独享所有权的智能指针,它提供了严格意义上的所有权。也就是只有这个指针能够访问这片空间,不允许拷贝&

http://www.yayakq.cn/news/876660/

相关文章:

  • 爱发电怎么做网站网站一般用什么软件做的
  • 高明网站制作平面设计欣赏网站推荐
  • 永久免费wap建站济南推广营销公司
  • 哪有免费的网站建设模板做网站必备
  • 网站权重优化服务器搭建代理ip
  • 企业网站推广策划方法龙岩好工作人才网最新招聘信息
  • 网站的宣传与推广wordpress主题炫酷
  • 重庆推广网站排名大同网站建设哪里好
  • 淘宝网站建设分析求个网站你懂我的意思吗
  • 怎么做百度网站免费的开网站做彩票赚钱吗
  • 网站弹屏广告怎么做的做网站是什么鬼
  • 泰兴市淘宝网站建设做it人经常逛的网站
  • 外文网站建站每天能赚30 50元的捕鱼游戏
  • 网站用什么语言做那些网站可以做行测题
  • 祖传做网站沈阳cms建站模板
  • 定州网站制作wordpress修改版面
  • 梵讯企业网站建设设计网址合集
  • 帮齐家网做的网站wordpress局域网自定义域名
  • 网站备案完毕 怎样建设网站有账号密码网站怎么建设
  • app 门户网站如何下载音乐到wordpress
  • 企业网站建站系统建筑工程网名
  • 广东省医院建设协会网站首页江苏建设集团有限公司
  • 指数网站中间件wordpress
  • 西安模板网站建设套餐启闭机闸门的网站建设
  • 深圳网站设计小程序药品彩页设计
  • 除了外链 还有什么办法使网站提高排名株洲网络
  • 做同城网站有哪些做网站买什么空间
  • 代做效果图的网站dede网站404怎么做
  • 企业产品做哪个网站推广好网易企业邮箱附件打不开
  • 免费的舆情网站不用下载直接打开无锡公司网站设计