構造体の内容を表示したり、更新したりする関数だ。この2つの関数は、以下のように実装した。ブロックで囲む必要がある。値も許されているため、コンパイラが参照外しの安全性を保証できないためだ。ポインタだったりしたら、参照外しの際に実行時エラーとなる。おける構造体の間違った渡しかた本題の関数を定義しよう。問題の起こるやり方で実装する。キャストして返してみよう。何をしたらいいのかわからないので、なにも書いていない。???}このプログラムは明らかに実行時エラーになるのだが、コンパイルはできてしまう。コンパイラが、生ポインタに関連するライフタイム分析をしないからだ。--verbose.不明なエラーとのこと。いう、メモリへの不正なアクセスが原因で落ちている。スコープから抜けるためだ。その時点で削除され、生ポインタが指すメモリ領域は、解放済みとなる。おける構造体の正しい渡しかた今度は正しい方法で実装する。そのままだと、関数を抜けたタイミングでスタックが巻き戻され、オブジェクトが削除されてしまう。化することで、ヒープに置こう。実体はポインタ(と、それと対をなす、ヒープ上に置かれたオブジェクト)なわけだが、生ポインタと違い、コンパイラにより所有権とライフタイムが追跡される。型に変換すれば、コンパイラによる追跡が行われなくなり、従って、構造体の削除を回避できる。試しにキャストしてみよう。MyStruct}残念ながら、これはコンパイルできない。強制的に型変換することだ。