CodeGym
AI Academy
促销
CodeGym University
学习
课程
任务
调查 & 测验
游戏
帮助
日程
社区
Users
论坛
聊天
文章
成功故事
动态
评价
订阅
浅色主题

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • 在函数中传递 std::unique_ptr

    C++ SELF
    等级 43,课时 0
    我们来讲解在 C++ 中如何正确地把 std::unique_ptr 传递给函数:什么时候按值传参表示“我接管所有权”,并且需要 std::move(...);什么时候需要引用 std::unique_ptr<T>& 来管理拥有者;以及什么时候根本不需要拥有者——使用 const T& 或 const T* 就足够了。最后我们会给出一张速查表、一个小练习,以及所有权边界上的常见错误。
    可用
  • std::unique_ptr — get() / reset() / release()

    C++ SELF
    等级 43,课时 1
    解析 std::unique_ptr 的所有权边界:介绍通过 get() 的“观察”与通过 reset() 的“销毁/替换”和通过 release() 的“向外转移所有权”有何区别。结合实践查看典型陷阱:从 get() 产生的第二个所有者、 reset() 后的悬空指针、 release() 导致的泄漏和 double-free,以及如何在与“旧”API交互时安全通过边界。
    可用
  • std::unique_ptr 中的 custom deleter:handle、FILE*

    C++ SELF
    等级 43,课时 2
    我们来讲解,如何把 std::unique_ptr 变成一种通用的 RAII 包装,用于那些不是通过 delete 释放的资源:什么是 handle,如何正确让 FILE* 与 fopen/ fclose 配合,custom deleter 的工作方式是什么(函数对象或函数指针),以及如何安全地使用 get()、 reset()、 release()。最后——我们会讲到释放机制和典型错误。
    可用
  • std::shared_ptr: 引用计数与开销

    C++ SELF
    等级 43,课时 3
    我们来讲解为什么需要 std::shared_ptr, reference counting 模型如何通过控制块工作,为什么拷贝会增加所有者数量(以及 use_count() 显示的含义)、对象实际上何时被销毁,以及共享拥有在内存和速度上的代价。最后 — 一个包含共享 AppContext 的实战例子并分析典型错误( reset()、空指针、对计数器的错误期望)。
    可用
  • std::make_shared — 控制块与优势

    C++ SELF
    等级 43,课时 4
    解析 std::make_shared 实际完成了什么: std::shared_ptr 的控制块( control block)如何组织,为什么常常是“一个分配替代两个分配”,手动用 new 包裹到 shared_ptr 有哪些危险,以及典型错误如何导致 double-free 和崩溃。通过一个带有共享所有权的任务调度小例子来巩固理解。
    可用
Learn
  • 注册
  • Java 课程
  • 任务帮助
  • 定价
  • Java 语法
社区
  • 用户
  • 文章
  • 论坛
  • 聊天
  • 成功故事
  • 动态
  • 联盟计划
Company
  • 关于我们
  • 联系方式
  • 评价
  • 媒体中心
  • CodeGym for EDU
  • 常见问题
  • 支持
CodeGymCodeGym 是一个从零开始学习 Java 编程的在线课程。该课程是初学者掌握 Java 的完美方式。它包含 1200+ 个带即时验证的任务,以及必要的 Java 基础理论。为了帮助你在学习中取得成功,我们实现了一系列激励功能:测验、编码项目、关于高效学习的内容,以及 Java 开发者职业相关内容。
关注我们
界面语言
English Deutsch Español हिन्दी Français Português Polski বাংলা
简体中文
मराठी தமிழ் Italiano Bahasa Indonesia 繁體中文 Nederlands 日本語 한국어 Bulgarian Danish Hungarian Basa Jawa Malay Norwegian Romanian Swedish Telugu Thai Українська Filipino Turkish Azərbaycan Русский Vietnamese
“程序员是培养出来的,不是天生的” © 2026 CodeGym
MastercardVisa
“程序员是培养出来的,不是天生的” © 2026 CodeGym