这样的程序
    Dim str As String
    Dim i As Integer
    str = ""
    For i = 0 To 40000
        str = str & "x"
    Next i
vb不断地分配内存导致内存溢出
请教高手怎么用指针构造一很大的string,可以往里面塞字符串,而不是重新构造的???就好象java中的stringbuff类

解决方案 »

  1.   

    Dim str As String
        Dim i As Long
        str = ""
        For i = 0 To 40000
            str = str & "x"
        Next i
    是i溢出了,将Integer改成Long类型就没事了。
      

  2.   

    同意楼上得。
    INTEGER 长度2个字节 存放整数-32768---32767
      

  3.   

    dim str as string * 40000
    用copymemory填
    copymemory varptr(str)+offset,varptr(addstr),length
      

  4.   

    vb的字符串可以放几十亿个字符的  用copymemory函数
      

  5.   

    其实目的是想把一个二进制转为十六进制,如果二进制太大的话,有没好的处理方法???
    '二进制转为十六进制
        Dim aHex As String
        Dim i As Long
        Dim xyz As String
        aHex = ""
        For i = 0 To SIZE - 1
            xyz = Hex(WENJIANN(i))
            If Len(xyz) = 1 Then xyz = "0" & xyz
            aHex = aHex & xyz
        Next i
      

  6.   

    Dim str As String
        Dim i As Long
        str = ""
        For i = 0 To 40000
            str = str & "x"
        Next i
      

  7.   

    字符串有两种:变长与定长的字符串。穇变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
    穇定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。注意    Public 定长字符串不能在类模块中使用。String 之字符码的范围是 0 到 255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同后 128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美圆号 ($)。
      

  8.   

    integer类型最大为32767
    你用到40000,已经超出范围了,当然溢出了~~
      

  9.   

    谢谢各位的支持,请教copymemory怎么用???
      

  10.   

    -------------------------------------
    '二进制转为十六进制
        Dim aHex As String
        Dim i As Long
        Dim xyz As String
        aHex = ""
        For i = 0 To SIZE - 1
            xyz = Hex(WENJIANN(i))
            If Len(xyz) = 1 Then xyz = "0" & xyz
            aHex = aHex & xyz
        Next i
    ---------------------------------------------------
    是十转十六吧
      

  11.   

    Public Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)Destination : 目标地址
    Source :  源地址
    length :  Copy的数据长度
      

  12.   

    VB的string类型最大可以达到2个G还不够你用?不够你就用文件操作吧,2G以上应该算文件了。
    你的错误前面都说明了,我不罗嗦了。