您的位置 首页 编程知识

C ++程序员&#s未定义行为指南

探索编程的未定义行为:一本详尽指南 本文介绍一本关于C语言编程中未定义行为的电子书,共12章,涵盖了C语言编程…

探索编程的未定义行为:一本详尽指南

本文介绍一本关于C语言编程中未定义行为的电子书,共12章,涵盖了C语言编程中一些最棘手和鲜为人知的方面。本书并非C语言入门教材,而是面向熟悉C语言编程的读者,深入探讨未定义行为的各种情况及其潜在后果。作者Dmitry Sviridkin,编辑Andrey Karpov。

C ++程序员&#s未定义行为指南

历经六个月的精心准备,这本电子书终于与读者见面。未来还将推出印刷版。本书最初计划包含11章,但在创作过程中,内容不断丰富,最终扩展到12章——这本身就是一个经典的数组越界案例,可谓是每个C程序员都可能遇到的问题。

本书内容涵盖了C语言编程中各种未定义行为的场景,例如:

  • 数据类型转换和溢出: 包括整型溢出、浮点数精度、整数提升和符号扩展等。
  • 内存管理: 探讨悬空指针、string_view、基于范围的for循环中的错误、自引用、std::vector和无效引用等问题。
  • 函数和表达式: 涵盖lambda函数捕获列表、元组、意外的可变性、隐式引用、使用后释放、生命周期扩展、最棘手的解析问题、非常量常数、移动语义、std::enable_if_t vs. std::void_t、遗漏return语句、省略号和函数、operator[]、iostreams调试技巧、逗号运算符、函数try块和零大小类型等。
  • 指针和数组: 分析无效终止字符串、std::sha_ptr、显式类型转换、如何安全地使用标准函数、无限循环和停止问题、递归、noexcept、缓冲区溢出、(n)RVO vs. RAII、空指针删除、静态初始化顺序问题、静态内联、ODR违反、名称保留等。
  • 类和对象: 涉及琐碎类型和ABI、未初始化的变量、C++20无界范围、非虚函数但表现为虚函数、VLA(可变长数组)、指针无效、数组的新位置、数据竞争、互斥锁死锁、信号安全、如何正确操作并触发死锁等。
  • 容器和算法: 包括std::vector::reserve和std::vector::resize、未对齐的引用、对象的生存周期、静态分析和未定义行为、以及总结等。

本书内容已分章节以文章形式陆续发表,您可以参考这些文章,但需注明出处。 任何形式的复制都需要获得作者的许可。作者Dmitry Sviridkin的联系方式:dmisvrl1@gml.com。 本书内容不得用于付费服务或任何基于费用的教学。

作者:Dmitry Sviridkin

Dmitry在高性能C和C++软件开发方面拥有超过八年的经验。2019年至2021年,他在圣彼得堡国立大学和高等经济学院教授C++动手课程。目前,他是AWS(CloudFront)的软件工程师,从事Rust和C++的系统和嵌入式开发工作。他的主要兴趣领域是软件安全。

编辑:Andrey Karpov

以上就是C ++程序员&#s未定义行为指南的详细内容,更多请关注php中文网其它相关文章!

本文来自网络,不代表四平甲倪网络网站制作专家立场,转载请注明出处:http://www.elephantgpt.cn/6476.html

作者: nijia

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

18844404989

在线咨询: QQ交谈

邮箱: 641522856@qq.com

工作时间:周一至周五,9:00-17:30,节假日休息

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部