Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDest As Any, pSource As Any, ByVal ByteLen As Long)Private Sub Form_Load()
Dim objSource As Collection
Set objSource = New Collection
objSource.Add "Test1"
'把对象拷贝成指针
Dim lpObj As Long
'---------注意--------------------
'用内存拷贝后对象引用计数并不会加1
'---------------------------------
CopyMemory lpObj, objSource, 4
Debug.Print lpObj
'从指针恢复对象,以下操作可能在不同过程中
Dim objDest As Collection
If lpObj > 0 Then
CopyMemory objDest, lpObj, 4
Debug.Print objDest(1)
'---------注意--------------------
'由于对象引用计数没有加1
'此时如果用Set objDest = Nothing
'释放对象将导致非法操作
'必须用以下语句释放对象
'---------------------------------
CopyMemory objDest, 0&, 4
End If
End Sub
Dim objSource As Collection
Set objSource = New Collection
objSource.Add "Test1"
'把对象拷贝成指针
Dim lpObj As Long
'---------注意--------------------
'用内存拷贝后对象引用计数并不会加1
'---------------------------------
CopyMemory lpObj, objSource, 4
Debug.Print lpObj
'从指针恢复对象,以下操作可能在不同过程中
Dim objDest As Collection
If lpObj > 0 Then
CopyMemory objDest, lpObj, 4
Debug.Print objDest(1)
'---------注意--------------------
'由于对象引用计数没有加1
'此时如果用Set objDest = Nothing
'释放对象将导致非法操作
'必须用以下语句释放对象
'---------------------------------
CopyMemory objDest, 0&, 4
End If
End Sub
并不是复制整个类对象