掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
タブに貼り付けたクラスの破棄は? (ID:34473)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
WindowsのGUIコントロールは目で見てわかるオブジェクトですから、 親子関係も一目瞭然です。 親が子をしっかりサポートするので自動的に破棄も納得できます。 ですが、そもそもオブジェクトってのは別にWindowの様なGUIコントロールの 為に作られたものではないので、見た目のないオブジェクトというのもあります。 見た目が無いので、親子関係もあったり無かったりです。 そもそも、破棄という動作は明示的に行わなくてはなりませんが、 親が破棄されるとき子を破棄するのは自然な動作なので、他人が作った 大抵のオブジェクトはそういうコードが仕込まれてるってわけです。 そんなわけで、基本原則は自前で破棄になります。 ただ、VCLの様な他人の作ったオブジェクトでさらにGUIを備えてる場合は 確実に自動的に破棄されると思って構いません。 もちろん最大の親元であるアプリケーションを終了させれば、 特殊なメモリー操作さえしていなければ、すべてのオブジェクトは破棄されます。 ちなみにインスタンス1個に対してオブジェクト(ポインタ)複数 なんて場合もあります。 buttonA,buttonB,buttonC : TButton; buttonA := TButton.Create; としておいて buttonB := buttonA; buttonC := buttonA; すればオブジェクト3個にインスタンス1個です。 buttonC.freeすればほかの二つはfree不要です。 こんなのが何の役に立つのか言われると、 そのうちわかるとしかいえませんが、この概念は結構重要です。 長々失礼しました。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.