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

丽水专业网站建设哪家好电商运营培训学费多少

丽水专业网站建设哪家好,电商运营培训学费多少,网站制作aqq,攀枝花做网站C 智能指针是通过 RAII(资源获取即初始化)技术来管理动态分配内存的工具,它能避免手动管理内存时常见的内存泄漏问题。下面详细介绍其两大核心机制:引用计数和自定义删除器。 一、 引用计数原理 引用计数是智能指针实现资源自动…

C++ 智能指针是通过 RAII(资源获取即初始化)技术来管理动态分配内存的工具,它能避免手动管理内存时常见的内存泄漏问题。下面详细介绍其两大核心机制:引用计数和自定义删除器。

一、 引用计数原理

引用计数是智能指针实现资源自动释放的基础机制。其工作流程如下:

  1. 当一个智能指针被创建并指向某个资源时,该资源的引用计数初始化为 1。
  2. 当智能指针被复制(如赋值给其他智能指针)或作为参数传递时,引用计数加 1。
  3. 当智能指针被销毁(如离开作用域)或被重置为指向其他资源时,引用计数减 1。
  4. 当引用计数降为 0 时,表示没有智能指针再引用该资源,此时自动释放该资源。

这种机制确保了资源的生命周期与引用它的智能指针数量严格绑定。C++ 标准库中的 std::shared_ptrstd::weak_ptr 就是基于引用计数实现的。

二、自定义删除器

默认情况下,智能指针在引用计数为 0 时会使用 delete 操作符释放资源。但对于一些特殊资源,如文件句柄、网络连接等,需要自定义释放方式,这时就可以使用自定义删除器。自定义删除器允许用户指定一个可调用对象(函数、函数对象或 Lambda 表达式),在资源释放时调用该对象来执行特定的清理操作。

三、 示例代码

下面是一个简单的示例,展示了引用计数和自定义删除器的用法:

#include <iostream>
#include <memory>// 自定义资源类,用于演示
class Resource {
public:Resource(int id) : id_(id) {std::cout << "Resource " << id_ << " created" << std::endl;}~Resource() {std::cout << "Resource " << id_ << " destroyed" << std::endl;}void use() const {std::cout << "Using resource " << id_ << std::endl;}
private:int id_;
};// 自定义删除器函数
void customDeleter(Resource* res) {std::cout << "Custom deleting resource" << std::endl;delete res;
}int main() {// 创建一个 shared_ptr,使用自定义删除器std::shared_ptr<Resource> ptr1(new Resource(1), customDeleter);std::cout << "ptr1 use count: " << ptr1.use_count() << std::endl;// 复制 shared_ptr,引用计数增加std::shared_ptr<Resource> ptr2 = ptr1;std::cout << "ptr1 use count: " << ptr1.use_count() << std::endl;std::cout << "ptr2 use count: " << ptr2.use_count() << std::endl;// 使用资源ptr1->use();ptr2->use();// 重置 ptr2,引用计数减少ptr2.reset();std::cout << "After reset ptr2:" << std::endl;std::cout << "ptr1 use count: " << ptr1.use_count() << std::endl;// ptr1 离开作用域,引用计数变为 0,资源被释放return 0;
}

四、代码解释

  1. 引用计数演示

    • ptr1 创建时引用计数为 1。
    • ptr2 复制 ptr1 后,两者引用计数都变为 2。
    • ptr2.reset() 使 ptr2 不再引用资源,ptr1 的引用计数变回 1。
    • ptr1 离开作用域时,引用计数降为 0,资源被释放。
  2. 自定义删除器演示

    • 通过 std::shared_ptr 的第二个参数传入 customDeleter 函数。
    • 当资源释放时,会先调用 customDeleter 函数,再执行实际的资源释放操作。

通过这种方式,C++ 智能指针提供了一种安全且灵活的内存管理方式,既能自动管理资源生命周期,又能适应各种特殊资源的释放需求。

http://www.dtcms.com/wzjs/517687.html

相关文章:

  • 做一份网站动态图多少钱广告推广网站
  • 地图网站制作吉林百度seo公司
  • 网站建设补助网站怎么打开
  • 网站左侧分类菜单怎么做广州seo推广服务
  • 邯郸做移动网站的公司站长工具忘忧草
  • php网站建设公司重庆百度小额贷款有限公司
  • 白酒网站源码百度推广怎么优化
  • 域名链接网站营销网站建设制作
  • 网站建设的公司资质宁波网站推广
  • 南京软月网站建设公司迅雷磁力链bt磁力天堂下载
  • 站群管理网络视频营销的案例
  • 如何提高网站的点击量网站建设公司大型
  • 制作测试题网站怎么做百度网盘搜索
  • 网站架构设计师工作内容重庆森林经典台词独白
  • 基础微网站开发代理淘宝关键词优化软件
  • 杭工e家app是哪个网站做的怎样做竞价推广
  • 太阳镜商城网站建设重庆电子商务seo
  • 惠州市建设局网站网络优化工作内容
  • 怎样做钓鱼网站哪家网站推广好
  • 网店美工需要掌握哪些软件seo站长论坛
  • 南通网站建设计划书上海seo优化公司 kinglink
  • 郑州有名的设计公司seo优化大公司排名
  • 陕西旭泽建设有限公司网站想做游戏推广怎么找游戏公司
  • 网址大全360导航seo搜索引擎优化总结报告
  • 太原网站建设老司机们用的关键词有哪些
  • 免费个人微网站seo网站推广免费
  • 上海 网站公司网络营销渠道
  • 简单的网站有哪些seo文案范例
  • logofree制作网站百度竞价点击神器奔奔
  • 订阅号自定义可以做链接网站不杭州网站推广优化