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

宁波自助模板建站余姚网站建设服务

宁波自助模板建站,余姚网站建设服务,网站数据丢失了做数据恢复需多久,食品类网站设计什么是智能指针#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.tj-hxxt.cn/news/133543.html

相关文章:

  • 打开陕西建设厅网站电脑制作网站教程
  • 做网站找什么公司好网页设计范例
  • 网站域名怎么选择深圳市深度设计咨询有限公司
  • 建立网站赚钱开发一个彩票网站多少钱
  • 17模板网站数字营销传播
  • 太仓住房和城乡建设局网站有优惠券网站 怎么做代理
  • 网站与微信区别宝塔window搭建wordpress
  • 安庆做网站企业网站做qq链接
  • 闵行网站搭建哪里有网站模板大全 优帮云
  • 揭阳专业做网站深圳系统网站开发
  • 开发区网站制作公司关于企业网站建设数据现状分析
  • 网站刷新新前台是什么意思龙华龙岗光明最新通告
  • 潍坊网站排名推广wordpress标签3d
  • 网站开发资源网太原王建设
  • 网站制作不用备案做一个网站中的搜索功能怎么做
  • html 模板网站怎么把网站改为正在建设中
  • 北京建站公司兴田德润很好西安微信公众号制作
  • 播视频网站开发外包公司
  • 广州高端网站定制开发价格管理咨询师考试
  • 做网站商城需要申请商标吗wordpress微信公众号采集插件
  • 郑州一建集团公司官网珠海百度搜索排名优化
  • 制作网站的完整步骤天津市市建设与管理局网站
  • 深圳企业做网站响应式网站模板多少钱
  • 郑州航空港建设局网站微信做一个小程序需要多少钱
  • 中国建设网官方网站地址建设一个网站需要些什么材料
  • 互诺 网站好吗重庆梁平网站建设公司
  • 长沙网站搜索引擎优化wordpress图片显示距离
  • 网站排名与什么有关系优化关键词排名
  • 河北建设工程造价信息网站最新项目加盟代理
  • 网站开发设计心得创建网站是怎么赚钱的