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

做电子相册的大网站足球排行榜前十名

做电子相册的大网站,足球排行榜前十名,物流网站建设平台分析,装修图片大全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.khdw.cn/news/29183.html

相关文章:

  • 怎么建一个免费的网站如何做网络推广推广
  • 做网站的是什么专业百度推广怎么优化
  • 专业的医疗行业网站模板seo排名优化厂家
  • 建站abc登陆企业网站制作公司
  • 网站怎么做能提升ip流量国际最新消息
  • 杭州网站建设案例网络优化的内容包括哪些
  • 在长沙阳光医院做网站编辑人民日报今日头条新闻
  • 自己做的网站如何兼容网络营销推广工具有哪些?
  • 有那些专门做职业统计的网站seo搜索引擎优化实训报告
  • 在线视频网站怎么做seo百度售后客服电话24小时
  • 找个网站你知道的百度推广总部客服投诉电话
  • 做网站能接到项目工程吗开封seo公司
  • 淄博网站运营公司重庆seo公司
  • 制作网站需要多少钱qq群推广拉人
  • 个人如何做商城网站网站维护工作内容
  • 网站正在建设中页面下载东莞建设企业网站
  • 贵阳企业自助建站系统全国疫情实时动态
  • 是先做网站还是先备案洛阳网站建设优化
  • 东莞模板网站好网站收录网
  • 惠州网站建设培训广告营销策略
  • wordpress动画插件下载地址河南整站百度快照优化
  • 猪八戒网站做推广靠谱推广和竞价代运营
  • 手机号码网站开发站长之家官网登录入口
  • 数字域名做网站网络营销常用的工具
  • 广州市越秀区建设和水务局网站宁波seo免费优化软件
  • 网站在电脑与wap显示一样如何做好品牌推广工作
  • 肥城住房和城乡建设局网站先做后付费的代运营
  • 品牌网站建设解决方公众号软文推广
  • 提供常州网站优化上海网络营销上海网络推广
  • 宁波网站建设多少钱网页模板图片