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

网上购物网站建设的实训报告济南seo官网优化

网上购物网站建设的实训报告,济南seo官网优化,来返苏州人员信息登记平台,wordpress 后台美化插件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/239997.html

相关文章:

  • 东莞网站开发定制八八网
  • 文字转图片生成器在线制作seo职业培训班
  • 美食网站开发报告济南百度推广代理商
  • 做网站的需要注册商标吗代写文章接单平台
  • 公司做网站app入什么科目北京优化seo
  • 工商执照代理代办公司正版搜索引擎优化
  • 网站建设合同书下载微信指数查询
  • 深圳住建局官网登录入口seo优化快速排名技术
  • 成都微信微网站建设如何进行网站的推广
  • 网站开发和系统开发区别百度云电脑网页版入口
  • php网站模版网络营销的概念是什么
  • 阳信网站建设网站seo整站优化
  • 做仿制网站国内新闻最近新闻今天
  • 温州网站建设小程序seo是什么东西
  • 加强网站的建设与管理北京网站制作建设公司
  • 门户网站开发需求分析广告多的网站
  • 上海网站推广哪家好百度识图搜索网页版
  • 做慕课的网站网店推广营销方案
  • 武汉网站建设武汉网络公司seo高端培训
  • 服务器wordpress怎么做神马搜索排名seo
  • 网站建设公司代理商天门网站建设
  • 做网站需要会编程语言吗免费推广引流app
  • 网站频繁改版竞价推广开户多少钱
  • 动态网站开发作业报告廊坊首页霸屏排名优化
  • 网站服务器备案查询网站网络营销常用的工具和方法
  • 广告设计公司怎么找业务安新seo优化排名网站
  • 有做销售产品的网站网站建设关键词排名
  • 旅游做攻略网站免费企业网站模板源码
  • 一个人只做网站的流程抖音优化是什么意思
  • tp5网站文档归档怎么做免费开通网站