連投申し訳ありません。Cの標準ライブラリのoffsetofマクロについて質問させてください。
https://www.wdic.org/w/TECH/offsetof
上記リンク先のページにあるように、Cのoffsetofマクロを
#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)
という形式で実装している処理系は多いかと思います。そして、TYPE構造体の先頭部分のアドレスを0番地とすれば、MEMBERへのオフセットが取得出来ることも理解できます。
しかし、『ポインタ完全制覇』でも触れられていた通り、0という定数は、ポインタ型として扱われる文脈ではNULLになるはずです。このマクロはNULL参照を行ったとしてクラッシュを引き起こさないのでしょうか?
それとも、offsetofをこのように実装している処理系では何らかの特別な処理を入れているのでしょうか。