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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Nullable API: 指针、std::optional 与 sentinel 值

    C++ SELF
    等级 41,课时 0
    我们来分析在 C++ 中表达“值可能不存在”的三种方式:返回指针 T* 并检查 nullptr,返回 std::optional<T> 并处理 std::nullopt,或者使用诸如 std::string::npos 之类的 sentinel 值。学习如何根据语义选择方法(“访问对象” vs “值-结果”),进行小规模 API 重构,并修复典型错误。
    可用
  • std::vector 中的失效:reallocation、erase

    C++ SELF
    等级 41,课时 1
    我们来解析在 std::vector 中引用/指针/迭代器的失效是什么,为什么容器在增长时会“搬家”( reallocation),为什么通过 erase 删除会移动元素并破坏旧地址,为什么 const 并不能保证安全,以及如何用一张“风险地图”来思考各操作( push_back, reserve, resize, erase),以免踩到 UB。
    可用
  • 避免在容器元素上保存指针

    C++ SELF
    等级 41,课时 2
    讨论一个 C++ 的实际问题:为什么在长期状态下保存指向 std::vector 元素的指针/引用是危险的(由于 reallocation 或在 erase 之后的移动会导致失效)、这如何导致 UB,以及用什么来替代这种“指向元素的引用”——用索引( std::optional<std::size_t>)或稳定的标识符( id),并在需要时重新获取访问权。
    可用
  • new/delete 和 new[]/delete[]:不匹配导致的 UB

    C++ SELF
    等级 41,课时 3
    解析在 C++ 中 new/ delete 与 new []/ delete [] 的真实工作方式:分配内存和构造对象时执行了哪些步骤,为什么 new int 与 new int {} 的初始化不同,为什么 delete 会结束对象的生命周期,以及最重要的——为什么混用删除形式会产生 UB。
    可用
  • 手动内存错误 — leak / use-after-free / double-free

    C++ SELF
    等级 41,课时 4
    解析 C++ 中三种经典的手动内存管理故障: leak、 double-free 和 use-after-free。确认 new/ delete 及 new []/ delete [] 的“黄金不变式”,查看典型场景(提前 return、指针覆盖、别名),然后通过一个包含 legacy 注释的 char* 小案例,观察隐式所有权如何导致 UB。
    可用
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