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)
答案 0 :(得分: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
答案 1 :(得分:0)
这是一个黑暗中的镜头,但根据我的经验,GetNth ... Notes中的方法非常低效。有没有办法像使用大多数Notes对象那样使用GetFirst / GetNext进行迭代?我会看看这是否有帮助。