热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VB6.0动态定义一维数组“ReDimPreserveX(1tom)”中m值最大为多少?有没有上限?

我在VB6.0程序中动态定义一个一维数组ReDimPreserveX(1to400*4000)出错,难道动态分配内存维数也有上限?请教大家,谢谢!
我在VB6.0程序中动态定义一个一维数组 ReDim Preserve X(1 to 400*4000)出错, 难道动态分配内存维数也有上限?
请教大家,谢谢!

14 个解决方案

#1


要这样写,不能写式子,要算出来:
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

#2


在我的电脑里,这个上限是:52999999

#3


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

#4


动态分配内存有上限,不过好像是2G.

#5


两个 Integer 相乘的结果超过 32767,产生溢出错误,与是否定义数组无关。
应该强制使用 Long 类型计算。
ReDim Preserve x(1 To 400 * 4000&)

#6


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,这是为何呀?

#7


引用 6 楼 LIUSHUANG19851119 的回复:
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,这是为何呀?


问题是你的 nLnNum 与 nPtNum 被赋值了没有........
0 乘以 0 当然等于 0 啦

#8


Private Sub Command1_Click()
Dim x()
ReDim Preserve x(1 To 1600000) '1600000=400*4000
MsgBox UBound(x) '可通过
End Sub

Private Sub Command2_Click()
Dim x()
ReDim Preserve x(1 To 20 * 80)
MsgBox UBound(x) '可通过
End Sub

Private Sub Command3_Click()
Dim x()
ReDim Preserve x(1 To 400 * 4000) '溢出
End Sub

Private Sub Command4_Click()
MsgBox 400 * 4000 '溢出
End Sub

比较上述测试结果,五楼老鸟的看法是对的

#9


上标和维数都直接影响数组占用的内存大小
一个数组能申请到最大多少的空间,要看电脑里面有多少物理内存和虚拟内存

#10


都查看过错误没有?
LIUSHUANG19851119 的语句根本不是内存不足的错误,我5楼已经说得很明白了。
Option Explicit

Sub Main()
    On Error GoTo E:
    Dim x() As Byte
          
10  ReDim x(&H7FFFFFFF)
20  ReDim Preserve x(1 To 400 * 4000)
30  ReDim Preserve x(1 To 400 * 4000&)
    Exit Sub
E:

    Debug.Print Erl & ":", Err.Number, Err.Description
    Resume Next
End Sub

#11


 

Dim GrdDataTem() as Double
Dim nLnNum As Integer, nPtNum As Integer 
nLnNum =400
nPtNum =400
ReDim Preserve GrdDataTem(1 To nLnNum * nPtNum&) 
这个“&”有何作用?怎么编译通不过?
按老鸟意见 怎么强制使用 Long 类型计算?

#12


强制 Long 型,只对常量起作用。
nLnNum、nPtNum 定义为 Long。

#13


ReDim Preserve GrdDataTem(1 To Clng(nLnNum) * CLng(nPtNum)) 

#14


问题已解决
谢谢大家的热情帮组
结贴给分

推荐阅读
  • Leetcode学习成长记:天池leetcode基础训练营Task01数组
    前言这是本人第一次参加由Datawhale举办的组队学习活动,这个活动每月一次,之前也一直关注,但未亲身参与过,这次看到活动 ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 本题涉及一种由Chip和Dale设计的文本加密方法。该方法通过预先约定的矩阵行数和列数,将字符转换为特定的二进制形式,并以螺旋方式填充矩阵。最终将矩阵中的二进制数连接成一个字符串,实现加密。 ... [详细]
  • 本文探讨了 TypeScript 中泛型的重要性和应用场景,通过多个实例详细解析了泛型如何提升代码的复用性和类型安全性。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • 本文介绍了 Python 中的基本数据类型,包括不可变数据类型(数字、字符串、元组)和可变数据类型(列表、字典、集合),并详细解释了每种数据类型的使用方法和常见操作。 ... [详细]
  • 【线段树】  本质是二叉树,每个节点表示一个区间[L,R],设m(R-L+1)2(该处结果向下取整)左孩子区间为[L,m],右孩子区间为[m ... [详细]
  • 题目描述:给定一个区间,支持两种操作:1. 将位置a的值修改为b;2. 查询区间[a, b]内的子序列的最大和,其中子序列中相邻的元素必须具有不同的奇偶性。 ... [详细]
  • 本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ... [详细]
  • iOS 不定参数 详解 ... [详细]
  • 在本次学习中,主要通过外部中断来控制LED的亮灭。首先,先查看相关电路图。由图可知,当CC2530端口1的0号引脚输出低电平时࿰ ... [详细]
  • 本文介绍了Go语言中正则表达式的基本使用方法,并提供了一些实用的示例代码。 ... [详细]
  • Quora问题探讨:26岁开始转行做开发是否太迟? ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
author-avatar
pipipa
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有