VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/05/13(Fri) 14:41
投稿者フレ
URL
タイトルRe: メソッドの戻り値を配列にするとメモリリークする?

お世話になっています。
フレです。

メモリ使用量が増える事象の原因は未だわかりませんが、
メソッドのシグネチャを変更しないでも
問題を解決する方法がわかりました。

ボタンクリックイベントの処理を
以下のように修正したら、
事象が再現しなくなりました。

Private Sub Command1_Click()
Dim bytArray() As Byte
Dim i As Long
For i = 1 To CLng(500000)
bytArray = Project2.getByteArray
Next i
End Sub

元々、今回の事象を発見した時は、
モジュールのメソッドの処理時間を
計測する目的で呼び出していたため、
戻り値は受け取る必要がなかったので
Call でメソッドを呼び出していましたが、
これだとまずかったようです。

Project2.getByteArray の戻り値を
呼び出し元側で受け取るように修正すれば
正常に動作するようになりました。

実際の業務アプリでは、Public Function のメソッドの
戻り値を受け取らないような作りになっている個所は
存在しませんので、今回の事象が業務アプリで
再現することはないと判断しました。

以上です。
お騒がせしました。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -