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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • string_view‑陷阱:深入生命周期规则

    C++ SELF
    等级 47,课时 0
    我们解析为什么 std::string_view 是对他人内存的“视图”(地址 + 长度),而不是字符串,以及由此产生的典型生命周期错误:从临时 std::string 构造的 view、对 substr() 结果的 view、函数返回 string_view、在模型字段中保存 view 以及在原始字符串被修改后使用 view。最后汇总安全风格:接受 std::string_view 作为参数,但在模型中保存 std::string,并给出决策检查表/流程。
    可用
  • std::span 与 std::vector:重分配

    C++ SELF
    等级 47,课时 1
    我们解析为什么 std::span 是一个不拥有内存的 视图,以及普通的 std::vector 增长(通过 push_back/ emplace_back)如何可能导致 reallocation,改变 data() 的地址并将旧的 span 变成悬垂(从而导致 UB)。展示常见坑:重分配时的失效、“过时”的大小、通过 pop_back/ erase 导致元素被销毁,以及给出安全风格:把 span 作为函数参数,而不是长期保存状态。
    可用
  • 生命周期安全规则:owner 与 view

    C++ SELF
    等级 47,课时 2
    解析实用的 owner/ view 模型在 C++ 中的应用:为什么 std::string_view、 std::span、指针和引用不拥有数据、悬垂引用(dangling)与 UB 如何产生、两个保护生命周期的规则是什么(owner 比 view 活得更久,以及不要将 view 存为字段而没有保证),以及如何以小项目 TaskTracker 为例设计 API(value、 const &、view)。
    可用
  • 作为 triage 一部分的性能小惯例

    C++ SELF
    等级 47,课时 3
    我们讲解在内存错误调查中作为稳定实验手段的 C++ 性能“微观卫生”:为什么多余的拷贝和移动会干扰可复现性, std::vector 在 push_back 与 reallocation 时如何表现, reserve 与 resize 有何不同,以及“诚实的签名”(按 const & 传递、使用 std::string_view、 std::span 等)如何减少 sanitizer 报告中的噪声并帮助更快定位根本原因。
    可用
  • Bug 排查检查清单

    C++ SELF
    等级 47,课时 4
    C++ 中 bug 排查的实用路线:如何把“偶尔崩溃”变成可确定复现的 repro,如何把场景最小化为 MRE,如何记录排查产物,并通过 assert 和 self_check() 建立回归屏障。我们以 std::vector、悬空指针( Task *)以及 push_back 时的内存搬迁为例,展示如何以工程化、可验证的方式思考。
    可用
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