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 回答