内存Copy方面的几个问题
问题一:
请帮忙解释下这个函数,模拟Varptr函数的函数
Function ObjPtr(obj As Object) As Long
'模拟Varptr,用来返回对象的指针
Dim lpObj As Long
CopyMemory lpObj, obj, 4
ObjPtr = lpObj
End Function
按照参考资料,CopyMemory的第二个参数默认传送的是obj的地址(指针),内存Copy后应该返回的是lpobj对象的值,为什么取这个对象的前4个字节就会变成这个对象的指针?请高手指点!
问题二:
Sub SwapStrPtr3(sA As String, sB As String)
Dim lTmp As Long
Dim pTmp As Long, psA As Long, psB As Long
pTmp = StrPtr(sA): psA = VarPtr(sA): psB = VarPtr(sB)
CopyMemory ByVal psA, ByVal psB, 4
CopyMemory ByVal psB, pTmp, 4
End Sub
我知道用StrPtr得到的是真实的内存地址,用VarPtr得到的是相关的Ansi的内存地址,但在调试的时候为什么变量SA已经被第一个CopyMemory中覆盖数值的情况下还能将原始数值赋给变量SB?希望高手解答!!!!