注册 登录
编程论坛 VB6论坛

[求助] VB6内存溢出

William1949 发布于 2017-02-05 10:48, 1272 次点击
程序代码:
Private Type ExtData
    Date            As Long
    Rec(1 To 13)    As Single
End Type
Private ExtRec()     As ExtData

Private Sub Form_Load()
    ReDim ExtRec(4096, 1895) As ExtData
End Sub


3 回复
#2
风吹过b2017-02-05 11:05
你算了一下,你的数组需要多少内存吗?
17*4097*1896
131957808字节,125.8m内存
好像vb6的数组大小不得超过 64k

这个怎么都会溢出。
可以考虑使用临时文件,那怕是使用数据库为临时文件都行。
#3
William19492017-02-05 11:34
回复 2楼 风吹过b
请问:

“17*4097*1896” 的 17 是什么?

17*4097*1896 应该等于:132054504。 “131957808字节”怎么算?

 我要上改成:ReDim ExtRec(4096, 1712) As ExtData,就不会溢出了,
我要读一个数据文件,共有1895个记录,每个记录的字段长度是4096

多谢!
#4
风吹过b2017-02-05 12:51
    Date      As Long   4
    Rec(1 To 13) As Single   13
4+13=17

定长字符串,保存全部字节在原始位置
变长数组,保存长度和地址在原始位置,长度好像为8。

你可以记录每条记录起始字节,临时读,不要把这些数据完全保存到内存里。
内存再大也不是这样用的。
凡是超过10M的文件,都不建议完整读入内存。

[此贴子已经被作者于2017-2-5 12:53编辑过]

1