第55章へようこそ。
今日のテーマは「transmuteと未定義動作」です。
第52章で、unsafeは規則を破る許可ではなく、保証の主体がコンパイラから人間へ移る境界だと見ました。
第53章と第54章では、その移転が起きる場所を見た。
生ポインタのデリファレンスでは、指す先に有効な値があることを人間が保証した。
UnsafeCellでは、読みと書きが衝突しないことを人間が保証した。
だが、保証に失敗したら何が起きるのかは、まだ確かめていない。
第54章では、前提と食い違ったプログラムの動作に保証は無い、とだけ言った。
今日は、この「保証は無い」の中身を確かめます。
unsafeの中には、人間がどう注意しても越えてはいけない線が引かれている。
その線がどこにあり、越えると何が起きるのか。
入り口は、ビット列を別の型として読み替える関数、transmuteです。
今日扱うのは、transmuteが何をするのか、型が持つ有効性の条件、そして未定義動作とは何か、です。
感想
まだ感想はありません。最初の1件を書きましょう!
スクロール