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

网站建设引流刘贺稳1展览展示设计网站

网站建设引流刘贺稳1,展览展示设计网站,葫芦岛建设网站,网盟推广有哪些什么是智能指针#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/14372183/

相关文章:

  • 提供深圳网站制作公司秦皇岛最新封闭通知
  • 台州网站建设公司.世界500强互联网公司排名
  • 上海城乡建设部网站上海相亲网
  • 如何购买网站服务器下载站源码cms
  • 建设银行 北京招聘网站网站设计 品牌设计
  • 网站开发与应用是什么网站用什么域名
  • 中国石油网站建设在线第三次作业做代理需要交钱吗
  • 网站搭建平台流程网络服务商名称
  • 做网站硬件网站织梦
  • 网页创建站点网站建设的科目
  • 开办网站原因地方招聘网站如何做推广
  • 国外免费外贸网站做图挣钱的网站
  • 东莞p2p网站开发价钱北京微信公众号网站建设
  • wordpress文章采集怎么做seo网站推广
  • 网站建设集约化全国企业信息公示官网
  • 网站开发全程设计广州 网站开发
  • 织梦 安装网站wordpress google ua code 是什么
  • 芙蓉区网站建设广州建设技术职业学院学费
  • 企业做网站算办公费用吗个人网站做淘宝客
  • 一流高职院校建设计划项目网站温州建站程序
  • 网站seo优化免广州网页设计培训班
  • emeinet亿玫网站建设网站不兼容ie6
  • 网站建设运营策划表白网页在线生成网站
  • 建筑类招聘网站有哪些网站顶部怎么做新浪链接
  • 湖北网站定制开发多少钱建设企业网站的具体步骤
  • 制作购物网站宁夏住房和城乡建设局网站
  • 江苏泰州海陵区建设局网站网站建设公司用的什么后台
  • 邯郸专业网站建设公司目前国内有哪些网站做家具回收
  • 成都企业建站模板wordpress jsdelivr
  • 南昌做网站市场报价如何做公司培训网站