Useractivity API类内存泄漏

时间:2012-06-05 11:21:31

标签: lotus-notes lotusscript

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)

2 个答案:

答案 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进行迭代?我会看看这是否有帮助。