首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

图像识别内存一直上升,并偶尔出现内存不能"read"的有关问题,求大神帮忙

2013-03-26 
图像识别内存一直上升,并偶尔出现内存不能read的问题,求大神帮忙,在线等本帖最后由 eaglewing1021 于 20

图像识别内存一直上升,并偶尔出现内存不能"read"的问题,求大神帮忙,在线等
本帖最后由 eaglewing1021 于 2012-06-16 16:50:00 编辑 Private Sub cmdSb_Click() '60张已有图片识别测试
 '   On Error GoTo err1
    Dim i As Integer
    Dim F_LEN As Long
    Dim buff_F() As Byte
    Dim str_path As String
    js = 60 '调试,识别照片数
    txtsend.Text = ""
    For i = 1 To js '60张相片识别
        str_path = App.Path + "\ZP" + CStr(Num) + "" + "ZD_ZP" & Trim(CStr(i)) & "" + ".bmp"’照片绝对路径
        ZP_LJ(i) = str_path
        Open str_path For Binary As #2
        F_LEN = FileLen(str_path)
        ReDim buff_F(0 To F_LEN - 1)
        Get #2, , buff_F
        Close #2
        ReDim pImageBuffe_S(0 To BMP_BUFF_DX - 1)’全局变量
        '去除图象头部分
        CopyMemory VarPtr(pImageBuffe_S(0)), VarPtr(buff_F(F_LEN - BMP_BUFF_DX)), BMP_BUFF_DX
        Erase buff_F
        DBMP_SB pImageBuffe_S, i’细胞识别函数,返回分类的细胞数和位置等信息
        Erase pImageBuffe_S
        '亮度计算
        'DPJ_LD_Z = 0 'LightEstimate(VarPtr(pImageBuffe_0(0)), BMP_WIDTH, BMP_HEIGHT)
        '更新列表信息    Next
    t2 = GetTickCount()
    Exit Sub
    ’程序删除了部分信息显示
err1:
    MsgBox Err.Description
End Sub

'将收到的大图RGB识别,累加各类细胞总数,取得各类小图的信息
 Public Function DBMP_SB(IN_BMP() As Byte, DBMP_H As Integer) As Integer
    '保存已识别出来的各类细胞数
    Dim DQBMP_SL As Integer
    DBMP_SB = -1
    Erase LeucChar1
    '中性粒子细胞识别度不够高……
    DQBMP_SL = 0 
    Do While DQBMP_SL = 0
        DQBMP_SL = WBCRecgAnaly(VarPtr(IN_BMP(0)), BMP_WIDTH, BMP_HEIGHT, VarPtr(LeucChar1(0)), 124)’图像识别功能函数.
        DoEvents
    Loop
    Dim a As String
    Dim b As String
    a = "C:\f1.txt"
    b = ""
    For i = 0 To DQBMP_SL - 1
    b = b & LeucChar1(i).NucCount & "    " & LeucChar1(i).X & "    " & LeucChar1(i).Y & "    " & LeucChar1(i).CellClass & Chr(13) + Chr(10)


    Next i
    Open a For Output As #1
    Print #1, b
    Close #1
    For i = 0 To DQBMP_SL - 1
    '信息处理
    Next
    XB_A_S = XB_A_S + DQBMP_SL
    DBMP_SB = 1
    Exit Function
CL1:
    Err.Clear
    MsgBox "DLL调用出现问题!"
End Function

说明:每张图片大小一次2048*1536,大小9MB
程序问题:1连续测试几次,也许会出现错误,内存不能为“read”,不确定性的。
2,在任务管理器中看内存使用率一直在上升。求大神指教!!!!
[解决办法]
内存上升,肯定是有内存没有被释放
[解决办法]
问题应该出在API的调用或API函数内部里,因为VB本身是会自动释放局部内存的,只要不是VB全局变量动态的无休止放大,是不会出现这种问题的。而且即使这样,也不会是内存不能为“read”的问题,这种问题通常出在API处理或调用的过程里,因为这源于 Win32 SDK 开发方式上的一些概念,而 VB 本身是很好的规避掉了这种概念,但如果使用到了API,就进入了Win32 SDK 开发模式,这种情况,如果概念不清楚,就很容易出错。
[解决办法]
调用API造成内存泄漏?

热点排行