查看: 48  |  回复: 0
VB6 证明了ReDim Preserve不管是扩大还是缩小数组都会分配新地址
楼主
发表于 4月3日 15:16

新建From1(窗体),新建Command1-4(按钮CommandButton),代码:

Private Sub Command1_Click()
    Dim arrA() As String
    ReDim arrA(10)
    Debug.Print VarPtr(arrA(0))
    
    ReDim arrA(20)
    Debug.Print VarPtr(arrA(0))
    Debug.Print String$(10, "-")
End Sub

Private Sub Command2_Click()
    Dim arrA() As String
    ReDim arrA(20)
    Debug.Print VarPtr(arrA(0))
    
    ReDim arrA(10)
    Debug.Print VarPtr(arrA(0))
    Debug.Print String$(10, "-")
End Sub

Private Sub Command3_Click()
    Dim arrA() As String
    ReDim arrA(10)
    Debug.Print VarPtr(arrA(0))
    
    ReDim Preserve arrA(20)
    Debug.Print VarPtr(arrA(0))
    Debug.Print String$(10, "-")
End Sub

Private Sub Command4_Click()
    Dim arrA() As String
    ReDim arrA(20)
    Debug.Print VarPtr(arrA(0))
    
    ReDim Preserve arrA(10)
    Debug.Print VarPtr(arrA(0))
    Debug.Print String$(10, "-")
End Sub

Private Sub Command5_Click()
    Dim arrA() As String
    ReDim arrA(10)
    Debug.Print VarPtr(arrA(0))
    
    ReDim Preserve arrA(10)
    Debug.Print VarPtr(arrA(0))
    Debug.Print String$(10, "-")
End Sub

运行结果:

 233366432 
 233630208 
----------
 233630208 
 233366488 
----------
 233366488 
 233630208 
----------
 233630208 
 233366432 
----------
 233366432 
 233366432 
----------

证明了ReDim Preserve不管是扩大还是缩小数组都会分配新地址(被CPU复制了数据,使用了资源),但是不扩大和缩小,就不变。

您需要登录后才可以回帖 登录 | 立即注册
【本版规则】请勿发表违反国家法律的内容,否则会被冻结账号和删贴。
用户名: 立即注册
密码:
2020-2024 MaNongKu.com