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

课时

  • 评论
  • 关于我们
开始
开始学习
立即开始学习
  • 我的进度
  • 课程
  • 任务地图
  • 课程
  • Undefined Behavior (UB):为什么“有时能运行”

    C++ SELF
    等级 35,课时 0
    我们来解析 C++ 中的 Undefined Behavior 是什么,以及为什么一旦出现它,语言就“什么都不保证”:从“在 Debug 里能运行、在 Release 里崩溃”的现象,到优化器为何会改变程序行为的原因。我们通过示例展示 UB 的典型来源(通过 operator[] 越界、除以零、 signed overflow、不正确的位移),搭建一个适用于 StudyLog 的安全迷你架构,并讨论如何借助 Sanitizer( ASan/ UBSan)定位 UB。
    可用
  • ASan/UBSan:它们各自发现哪些问题

    C++ SELF
    等级 35,课时 1
    我们来分析为什么在 C++ 中启用 sanitizers(消毒器)有用,以及为什么这通常是一个单独的构建模式(插桩会产生不同的二进制文件)。比较一下 ASan 和 UBSan 的职责范围,看看典型的“触发场景”(数组/向量越界、除以 0、 signed overflow、不正确的移位等),并通过实践巩固:编译标志 -fsanitize=address/ -fsanitize=undefined,以及有用的选项 -g 和 -O0,还有一个带有步骤统计的小案例。
    可用
  • Sanitizer 示例报告解析:如何阅读堆栈

    C++ SELF
    等级 35,课时 2
    我们讲解如何阅读 AddressSanitizer ( ASan) 和 UndefinedBehaviorSanitizer ( UBSan) 的实用流程:如何在 10 秒内抓住问题类型( heap-buffer-overflow、 division by zero)、找到指向你的第一个 .cpp/ .hpp 的行、读取 stack trace 并区分“发现地点”与“产生地点”。在以 std::vector 为例的小项目中,我们给出类似 i < v . size() 的不变量,并学习修复根本原因而不是症状。
    可用
  • assert — 用作不变量的运行时保护

    C++ SELF
    等级 35,课时 3
    讲解如何将 assert(来自 <cassert>)用作不变量的“安全阀”:在哪里放置检查、为什么在 Release 中它可能因为 NDEBUG 而消失、为什么不能在 assert(...) 中产生副作用、如何通过 && 添加可读的消息,以及如何将检查与 sanitizer 结合以实现尽早且可诊断的崩溃。
    可用
  • static_assert: 编译时检查

    C++ SELF
    等级 35,课时 4
    我们来讲解如何在 C++ 中使用 static_assert 做编译时契约:它与 assert 和普通的 if 有何不同,哪些条件被视为常量(例如 constexpr、 sizeof 等),如何保护项目配置以及解读编译器信息。再加上——在模板中使用 static_assert 的稳妥入门与常见错误。
    可用
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