掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
動的フレームの再作成でエラー (ID:22571)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> Frame 2006/08/20(日) 16:07:44 > 一般的なイベントハンドラはSendMessageが起動元になっている場合が多いと思います。 > これはいわゆる割り込みに近いもので他の処理をペンディングしてメッセージの処理をしています。その(割り込み)処理の中でFreeされてしまうとペンディングされている処理が再開された時にオブジェクトがなくなっているのでメモリ保護違反が起きる可能性が高くなります。 だから、これがすべてじゃない? 別に、FormFree() の後で、すぐにアクセス違反になるとは書いてない ・・・が、まぁ、「なくなった領域に戻ってきたら」と思われてもしゃーないな。 メソッドなんて、所詮動作を記述したエリアへのポインタ?でしかないから、 クリエイトしていないクラスのメソッドで、自分の確保すべきメモリにさえ アクセスしなければいい。 普通は class procedure 〜 と「class」を頭につけるけどな。 だから、FormFree を実行しているToolButton1Click自身は安全。 でも、それを実際に実行しているVCL内部は、必ずしも安全とは言えない。 Createしたときに確保されるメモリ領域にアクセスするかしないかは、 VCLの作り次第。 いくらメソッドがポインタであっても、そこが保証されない。 だから、Releaseを使い破棄するタイミングをずらし、フォーム上に乗っかっているその他VCL内部の影響を極力避ける。 今回のFormFreeメソッドは、他のフォームのメソッドを使っているだけで、 普通にFreeと書いているのと変わりがない。 別フォームで破棄することが難しいという話の例にはならない。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.