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

展览展示设计网站喀什网站制作

展览展示设计网站,喀什网站制作,公司网站建设一条龙,wordpress导航菜单小图标什么是智能指针#xff1f; 当你在编写程序时#xff0c;可能需要在运行时动态分配内存来存储数据。在传统的C中#xff0c;你可能会使用 new 和 delete 操作符来手动管理内存。但是这样容易出现一些问题#xff0c;比如忘记释放内存导致内存泄漏#xff0c;或者释放了之…什么是智能指针 当你在编写程序时可能需要在运行时动态分配内存来存储数据。在传统的C中你可能会使用 new 和 delete 操作符来手动管理内存。但是这样容易出现一些问题比如忘记释放内存导致内存泄漏或者释放了之后仍然使用已经释放的内存悬空指针问题。 智能指针是为了解决这些问题而引入的。它们是一种封装了动态分配内存的对象具有自动内存管理的功能。C标准库提供了两种主要的智能指针类型std::shared_ptr 和 std::unique_ptr。 std::shared_ptr : 允许多个智能指针共享同一块内存使用引用计数来跟踪共享情况。std::unique_ptr 保证在任何时候只有一个智能指针可以管理特定的内存块支持独占所有权。 1.std::shared_ptr: std::shared_ptr 允许多个智能指针共享同一块内存。每个 shared_ptr 都有一个关联的引用计数记录有多少个 shared_ptr 指向相同的内存。当引用计数变为零时表示没有智能指针再指向这块内存内存会被释放。 #include memoryint main() {// 创建一个 shared_ptr它指向一个动态分配的整数std::shared_ptrint sharedPtr std::make_sharedint(42);// 创建另一个 shared_ptr与前一个共享同一块内存std::shared_ptrint anotherSharedPtr sharedPtr;// 引用计数为2因为有两个 shared_ptr 指向相同的内存// ...// 当最后一个指向内存的 shared_ptr 被销毁时内存会被释放return 0; }2.std::unique_ptr: std::unique_ptr 确保在任何时候只有一个智能指针可以管理特定的内存块。不能直接复制或赋值 unique_ptr因为这违反了“独占所有权”的原则。当 unique_ptr 被销毁时它所管理的内存也会被释放。 #include memoryint main() {// 创建一个 unique_ptr它独占一个动态分配的整数std::unique_ptrint uniquePtr std::make_uniqueint(42);// 不能这样做因为这违反了独占所有权的原则// std::unique_ptrint anotherUniquePtr uniquePtr;// ...// 当 uniquePtr 被销毁时它所管理的内存会被释放return 0; } 使用智能指针的C图形应用程序 在现代C中智能指针是一种强大的工具用于更安全和方便地管理动态内存。本文将演示一个简单的图形应用程序示例展示如何使用 std::shared_ptr 和 std::unique_ptr 来管理图形对象的内存。 实际应用示例 假设我们正在编写一个图形应用程序需要处理不同类型的图形对象。我们将创建一个简单的图形类层次结构并使用智能指针来管理这些对象的内存。 #include iostream #include memory #include vector// 抽象基类 Shape class Shape { public:virtual void draw() const 0;virtual ~Shape() {std::cout Shape Destructor std::endl;} };// 派生类 Circle class Circle : public Shape { public:void draw() const override {std::cout Drawing a Circle std::endl;}~Circle() {std::cout Circle Destructor std::endl;} };// 派生类 Square class Square : public Shape { public:void draw() const override {std::cout Drawing a Square std::endl;}~Square() {std::cout Square Destructor std::endl;} };int main() {// 使用 shared_ptr 管理 Shape 对象的动态分配内存std::shared_ptrShape circlePtr std::make_sharedCircle();std::shared_ptrShape squarePtr std::make_sharedSquare();// 使用 unique_ptr 管理 Shape 对象的动态分配内存std::unique_ptrShape anotherCirclePtr std::make_uniqueCircle();// 将智能指针存储在容器中std::vectorstd::shared_ptrShape shapes;shapes.push_back(circlePtr);shapes.push_back(squarePtr);// 使用 std::move 将所有权转移给容器shapes.push_back(std::move(anotherCirclePtr));// 调用 draw 方法for (const auto shape : shapes) {shape-draw();}// 当 main 函数结束时所有的智能指针将被销毁从而释放相关内存return 0; }
http://www.hkea.cn/news/14263158/

相关文章:

  • 互助网站建设公司门户网站产品设计方案
  • 网站开发人员保密wordpress可视化找不着
  • 网站建设必学课程网站编辑制作
  • 哪里可以制作网站wordpress安装包下载
  • 怎么做网站维护宣传中企动力是干什么的
  • wordpress取第一张图片下载班级优化大师
  • 泰安网站建设哪家不错国际重大新闻事件2023
  • 网站页面建设规划文案我是做网站的
  • 宁波手机网站开发公司番禺网站开发哪家专业
  • 免费金融发布网站模板下载企业邮箱哪家便宜
  • 十大网站在线观看徐州市铜山新区建设局网站
  • 建设网站需要给钱吗谷歌网站为什么打不开
  • 网站域名过期未续费怎么办什么叫网站外链
  • 浙江联科网站开发一元注册公司流程
  • 不想网站备案如何办算命网站建设开发
  • dedecms 做微网站怎么做淘客推广网站
  • 高端网站制作网站建设广州建网站维护公司
  • 网站设建设表单wordpress怎么使用自己的模板
  • 不会代码 怎么做网站济南网站开发公司
  • 海口制作手机网站vultr 搭建wordpress
  • 惠州开发做商城网站建设哪家好如何用dw做网站地图
  • dede本地搭建好网站后台密码和用户名是什么wordpress 内容采集
  • 深圳建网站服务wordpress文章首字下沉
  • 化妆品网站建设原因来宾市住房和城乡建设局网站
  • 影视传媒广告公司网站模板手机平台网站系统
  • 建设电子商务网站市场分析网站建设实训个人总结3000字
  • 室内设计案例去什么网站建立一个公司
  • 腾讯企业邮箱电脑版温州网站优化推广方案
  • 网站建设应该列入什么科目wordpress 显示全部分类
  • wap卖料建站系统六安政务中心网站