1

NotesUserActivityクラスにメモリリークがあるようです複数のデータベースからユーザーアクティビティ情報を収集してGetNthUserActivityEntryメソッドを呼び出すと、呼び出すたびにメモリ使用量が増加します。

この問題への参照がいくつか見つかりましたが、解決策はありません。この問題はこの呼び出しに関連していると思います。

' Load the User name for the Activity Structure
UsernameOffset = puActivity + puActivityEntry.UserNameOffset
spUsername = Space(MAXUSERNAME)
Call CopyMemoryString(spUsername, UsernameOffset,Lenb(spUsername))
sUserName = Left(spUsername, Instr(spUsername, Chr(0)) - 1)
4

2 に答える 2

2

ユーザー名は、MAXUSERNAMEバイト(256)を読み取ることによってメモリからフェッチされます。ユーザー名は通常256バイトの長さではないので、関数はアクセスすべきではないメモリにアクセスすると思います。

コードを次のように変更しました:

Call CopyMemoryString(spUsername, UsernameOffset, strlenLP(UsernameOffset))
Dim sUsername As String
sUserName = Trim(spUsername)

このstrlenLP()メソッドは、に達するまでメモリを読み取ります\0。宣言は次のとおりです。

Declare Private Function lstrlenLP Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Long) As Long
于 2012-06-05T11:21:31.590 に答える
0

暗闇の中でのショットですが、私の経験では、GetNth...Notesのメソッドは非常に非効率的です。ほとんどのNotesオブジェクトのように、GetFirst / GetNextを使用して反復する方法はありますか?それが役立つかどうかを確認します。

于 2012-06-05T12:12:56.483 に答える