この包括的なガイドは、典型的な教科書の説明を超えて、Cにおける未定義の動作の複雑さを探ります。 経験豊富なCプログラマーに最適なこの被験者の最も不明瞭な側面に深く潜ることは、元々11部構成のシリーズとして計画されていた6か月のプロジェクトの集大成ですが、12に拡大しました。 Dmitry Sviridkinによって執筆され、Andrey Karpovが編集したこの作品は、将来の印刷出版が予定されています。
この本は、次のような幅広いトピックを掘り下げています。
-
はじめに:未定義の動作とその結果を定義する変換の狭窄と暗黙の型変換の探求
-
整数および浮動小数点の問題:署名された整数のオーバーフロー、浮動小数点特性、整数プロモーション、および
char
および符号の拡張のニュアンスを調べます。
- メモリ管理と参考文献:dangling参照、、ループ、自己参照、および
string_view
参照の無効化の範囲ベース。
std::vector
lambda関数と可変性:- ラムダ関数キャプチャリスト、タプル、予期しない可変性、暗黙の参照、使用後の拡張機能、および寿命の延長。
解析と移動セマンティクス:
最も厄介な解析、非定数定数、動きセマンティクス、- vs. 、および忘れられたステートメントに取り組む。
std::enable_if_t
std::void_t
オペレーターとI/O:return
ellipsisと関数をカバーする、 、デバッグの課題、コンマオペレーター、機能 - トリブロック、ゼロサイズのタイプ。 >
-
文字列とスマートポインター:ヌル終端文字列、
operator[]
、明示的なタイプ変換、および安全な標準関数の合格について議論します。
iostreams
ループ、再帰、およびバッファー:- 無限のループの探索、停止問題、再帰、処理、およびバッファオーバーフロー。
std::shared_ptr
raii、ポインター、および初期化: 比較(n)rvoとraii、ヌルポインターの解釈、静的初期化順序Fiasco、静的インライン関数、ODR違反、および予約名の検査。
-
タイプ、変数、および範囲:些細なタイプとABI、UnInitialized Variables、C 20 Unbounded Ryness、非自由でありながら仮想関数、およびVLAS。
noexcept
ポインター、並行性、および信号:- 無効なポインター、アレイの新しい配置、データレース、ミューテックスデッドロック、信号安全性、デッドロック回避のためのベストプラクティスへの対処。
ベクトル、アライメント、および静的分析:
>分析- および、整理されていない参照、オブジェクトの寿命、静的分析および未定義の動作、および結論の発言。
- ライセンスと使用法:
この作業は、適切な帰属で参照できるようになりました。 コピーまたは複製には、著者の許可が必要です(dmisvrl1@gmail.com)。 商業使用または料金ベースの指示は禁止されています
- 著者について:
std::vector::reserve
-
dmitry sviridkin:AWSのソフトウェアエンジニアは、高性能ソフトウェア開発の豊富な経験と、CおよびLinuxシステムプログラミングの指導の背景。
- Andrey Karpov:
以上がCプログラマー&#の未定義の動作ガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。