掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
こんな関数作る人はいないのか? (ID:25443)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
><関数側> >function test: TStringList; >begin >Result := TStringList.Create; >Result.Add('OK'); >end; > ><呼び出し側> >showmessage(test.text); これじゃメモリリークしてます。 関数を抜けた時点では解放されていません。 みんな言ってますがFreeは必要です。 >>xxx := test;とした時にtestというTstringlistのインスタンスが作成されているはずだと思うのです... >それが勘違い。 >xxxという変数に代入されるのは単なるポインタ(4byte)。 嗚呼カンチガイさんの言い方が分かりづらいので混乱してるようですが、 test呼んだ時点でTStringListのインスタンスは確保されています。 xxxに代入されるのは確かにTStringListのインスタンスを指すポインタです。 testは関数名であってインスタンスではありません。testの戻り値がインスタンスへのポインタです。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.