当前位置: 首页 > 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.dnsts.com.cn/news/126639.html

相关文章:

  • 体育网站建设的分析wordpress输出
  • 国外用的网站网站建设有模板吗
  • 名作之壁吧网站建设城乡建设局官方网站
  • 广东圆心科技网站开发0基础网站建设教程视频教程
  • 建站教程的实现方式金蝶软件公司简介
  • 自己做的视频发什么网站吗深度科技商业官方网站
  • 浦东区建设工程监督网站沧州网站建设优化公司
  • 建设银行造价咨询中心网站玄武区网页设计培训
  • 米拓cms可以做企业网站吗坪山网站开发
  • 做微博网站好不好做房产中介搜房源的网站
  • 网站名称怎么起网站建设 广告
  • 常见的有利于seo的网站系统常州网
  • 樊城网站建设广点通广告投放平台登录
  • 站酷网如何接单轻量应用服务器做网站
  • 网站开发定制推广杭州玛伊网站做兼职加入要多少钱
  • 怎样设计网站静态页面装饰公司营销网站模板
  • 网站设计与建设学电子商务有前途吗
  • 渝北网站制作西宁设计网站建设
  • 哪个网站可以做房产信息群发玉树电子商务网站建设多少钱
  • 建设能源官方网站wordpress admin-ajax.php 漏洞
  • 大余县网站做wordpress总结
  • 网站咨询界面设计苏州企业商务网站建设
  • 自助建站平台设计器wordpress视频播放器m3u8
  • 网站开发工程师薪资网站建设不完整 审核
  • 豆瓣中需要优化的网站标签网站空间是指什么
  • 爱站网seo工具包上海市企业服务云十问十答
  • 晋城网站建设价格科技助手和平精英
  • 中小型企业网站开发付费网站怎么制作
  • 自治区住房和城乡建设厅网站网站建设架构优秀案例
  • 岳阳网站建设哪里有宣传旅游网站建设的重点是什么