文字列の廃棄

格納文字列の廃棄

格納された文字列をもう使わないのであれば、それにメモリを占拠させておくのは無駄です。RELEASE:メッセージを送ると、文字列は廃棄され、確保されていたメモリ領域は完全に解放されます。
RELEASE:  MyString 	  \ RELEASE:  ( -- )

ただ、細かいことですが、Stringオブジェクトは、文字列データ以外にもサイズやアクティブ部分を示すオフセットの値といったデータ(インスタンス変数)を持っています。RELEASE:メソッドは、これら全てを初期化してくれるわけではありません。もっとも、そのままにしておいても、次に内容を格納したときには、全てが適切な値にセットされるようになっています。

付随的なデータも初期化したいときには、CLEAR:メソッドがあります。このメソッドは、マスターポインタ自体は保持しますが、随伴するヒープ領域の大きさは0にセットします。これは結果として、残りのデータを全て初期化することになります。
CLEAR:  MyString	  \ CLEAR:  ( -- )

マスターポインタの分(PPC G3,G4では4バイト)はシステムの側が領域を確保してくれます。特に個数が多くないのであれば、このままでも大きなロスではありません。気になる場合は、重ねてRELEASE:すればよいことになります。こうすれば、オブジェクトデータ以外の部分は完全に解放されるとともに、Stringオブジェクトのインスタンス変数も完全に初期化されます。

なお、PUT:メソッドを用いて文字列オブジェクトの内容を新たに代入すると、それ以前に格納されていた文字列は自動的にRELEASE:されます。したがって、新たにPUT:する場合には事前に廃棄操作をする必要はありません。

関連項目:






最終更新:2019年05月26日 21:30