作者:pipipa | 来源:互联网 | 2023-09-18 16:44
我在VB6.0程序中动态定义一个一维数组 ReDim Preserve X(1 to 400*4000)出错, 难道动态分配内存维数也有上限?
请教大家,谢谢!
14 个解决方案
Option Explicit
Dim X() As Long
Private Sub Command1_Click()
Dim i As Long
i = 1600000
ReDim Preserve X(1 To i)
Debug.Print Len(X(0)) * i '数组大小
End Sub
Dim nLnNum As Integer, nPtNum As Integer
ReDim Preserve GrdDataTem(1 To nLnNum * nPtNum)
当nLnNum和nPtNum比较小的时候可以,但太大就不行了(如都等于400),为什么?
我按照1楼和4楼的意见写为:
Dim Lenth As Long
Lenth = nLnNum * nPtNum
ReDim Preserve X(1 To Lenth )
调试发现Lenth值是0,这是为何呀?
上标和维数都直接影响数组占用的内存大小
一个数组能申请到最大多少的空间,要看电脑里面有多少物理内存和虚拟内存
强制 Long 型,只对常量起作用。
nLnNum、nPtNum 定义为 Long。
ReDim Preserve GrdDataTem(1 To Clng(nLnNum) * CLng(nPtNum))