このサイズに何か根拠があったわけではなく、当てずっぽうです。利用しないようにします。いくつか問題があります。拡張ライブラリの互換性が壊れてしまう、という問題です。オブジェクトについて考えてみます。確保したメモリへのポインタを持っています。コードがあったとします。確保したメモリへのポインタですね。実体を待避する、というものになります。アクセスが危険なものになります。は古い領域をさすことになり、おかしなことになります。がらみでは、こういう問題がいくつも出てきます)。オブジェクトから取得しなければなりません。起こるか、すべてチェックする必要があります)、という問題から、現実的ではありません。そこで、2つの工夫を行うことにしました。いろいろなところで起きます。これを予測するのはとても難しい。直後ではなく、ファイナライザが起動するタイミングに遅延することにしました。コードで記述することができます。プログラムが動き得るタイミングということになります。側で取得したポインタが無効になることがあり得ます。コードを実行した後では、それがそのまま利用可能かどうかわからない、ということです。先ほどの例を見てみましょう。無効になる処理が実行されるかもしれないためです。コードを実行すると、事前に取得したポインタは保障できない、という問題は、昔からありました。開発者は、この制限を受け入れているはずのですので、「このようなコードは無い」という仮定を置くことは妥当です*3。コードが動くタイミングで待避を行うのは妥当と言えると思います。コードが動くタイミングというのが、ファイナライザを動かすタイミングなのです。待避することにしました。扱うポインタは、これで「待避されるかも...」という不安を払拭することができます。いう処理を行っています。ままなら、性能はもう少し高いままかもしれないのに。動かなくなるプログラムがでるよりは良いだろう、とこのような仕様にしました。