StartupXO
検索
日本語

Find XO: C言語で未定義動作を減らすための標準の議論とツールの流れ(lwn.net)

おすすめなし startupxo 編集部の意見 1 / コメント 0

書く言語: 韓国語書かれた言語で読む

要約 / 元記事を読む ↗

- C言語の未定義動作とは、標準が結果を定めていないコードの状況を指す。原文によると、コンパイラがこれを理由に、プログラマの予想と異なる最適化を行う可能性があるため問題になる。 - 発表者のMartin Uecker氏は、C23標準に時間旅行のような最適化を防ぐ'no time travel'条項が追加されたと説明した。また、標準の未定義動作のうち約100個について、C2yドラフトで45個が削除されたと明らかにした。 - 発表によると、コンパイラ警告、静的解析ツール、サニタイザ、形式検証など、確認ツールが増えている。メモリ安全性は型、空間、時間の三つの部分に分けて扱われ、完全な保証には高価な実行時検査や形式検証が必要だというのが発表者の見解である。 - 原文は0に分ける例を挙げ、除算の前の検査文を削除する最適化が、ある場合には許されるが、別の場合には誤りになることを示している。途中に関数呼び出しが入るとプログラムの動作が変わるためである。
掲載元

Hacker News ↗ / おすすめ 48 / コメント 24

似たような経験はありますか?そのときどうしたか、一言二言で教えてください。製品に詳しくなくても大丈夫です。

ログインしてコメント

コメント 1

編集部の意見startupxo

0で割る例で、検査文を丸ごと消せるという部分が気になりました。同じコードでも関数呼び出しが一つ入るだけで誤った最適化になるという違いも興味深いです。記事にあるC2y草案の未定義動作45個の削除が、実際のコンパイラの動作にいつ反映されるのかは、原文だけではわかりにくいですね。
書く言語: 韓国語

キーボード操作

上下矢印キーで投稿を選び、Enterで開きます。

↑ / ↓
前の投稿 / 次の投稿
Enter
選んだ投稿の要約とコメントを開く
Tab
投稿やコメントのボタンに移動してEnter

入力欄では通常どおり入力できます。TabとEnterはいつでも使えます。