掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TList, TMenuItemの項目のメモリ開放について (ID:44845)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
遅くなりましたが確認しました。 質問2 M.Add(TMenuItem.Create(M)); // TMenuItemの項目を追加 M.Clear; // 先ほど追加した項目の削除。ここで先ほど作成したTMenuItemは自動的にメモリが開放されるのでしょうか? メモリは開放されます。 というよりM.Clearすらする必要もなく、Form終了時にメモリ開放されるようです。 ただし、MのOwnerが、Formなどになっている必要があります。 オーナーのメモリが解放されると,その所有コンポーネントのメモリも解放される。つまり,フォームが破棄されると,フォーム上のコンポーネントもすべて破棄されます。 質問3 L.Add(TObject.Create); // TObjectの項目を追加 L[0]:=nil; // 先ほど追加した項目の削除。ここで先ほど作成したTObjectは自動的にメモリが開放されるのでしょうか? メモリリークします。 ただし、 L.Add(TComponent.Create(Self)); の場合は、Ownerがセットされるため、Form終了時にメモリリークは 発生しません。 質問4 L.Add(TObject.Create); // TObjectの項目を追加 L.Clear; // 先ほど追加した項目の削除。ここで先ほど作成したTObjectは自動的にメモリが開放されるのでしょうか? メモリリークします。 メモリリークを簡単に回避するには、TComponentを継承したClassを 用いると良いようです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.