Click here to Skip to main content
12,694,121 members (32,362 online)
Rate this:
Please Sign up or sign in to vote.
See more: VB6 COM memory
Hello Everyone,

I have the following issue on Visual Basic 6.

In a default vb program project, I have the following lines in a button event handler:

Private Sub Command1_Click()
    On Error Resume Next
    Dim Ws As Object
    Dim CloneMeas As Object
    Dim CloneSubMeas As Object
    Dim lMeas As Long
    Dim lSubMeas As Long
    Set Ws = CreateObject("mm_office.workspace")
    For lMeas = 1 To 8
        Set CloneMeas = CreateObject("mm_office.measurement")
        CloneMeas.Size = 1025
        CloneMeas.Complex = True

        For lSubMeas = 1 To 250
            Set CloneSubMeas = CreateObject("mm_office.measurement")
            CloneSubMeas.Size = 1025
            CloneSubMeas.Complex = True
            CloneMeas.measurements.Add CloneSubMeas
            Set CloneSubMeas = Nothing
        Next lSubMeas
        Ws.measurements.Add CloneMeas
        Set coSubMeass = Nothing
        Set CloneMeas = Nothing
    Next lMeas
    MsgBox CStr(Ws.measurements.Count)
    MsgBox CStr(Ws.measurements.Count)
    Set Ws = Nothing
End Sub

The objects invoked are implemented in c++ vs6.

When I run the application from vs6, the memory after "Ws.measurements.Removeall" returns to his initial state.
If I run it in compiled version, I then get around 5 mb memory leakage.
What could be the reason ? I have not seen memory leakage and if I run a sample c++ consumer application, it works fine.

This is really crazy.

Do you have already seen something like that? What kind of advise could you post me ?

Thank you very much in advance.
Best regards.
Posted 13-Apr-12 1:50am
SAKryukov 16-Apr-12 13:25pm
Any special reason to deal with VB6? :-)
SuperMiQi 18-Apr-12 4:16am
Hello SAKryukov,

Thank you for your reply but the project I have to maintain was developped on Visual Basic 6.

Have a nice day.
Best regards.

1 solution

Rate this: bad
Please Sign up or sign in to vote.

Solution 1

i believe, the following lines are base of your problem:
CloneMeas.measurements.Add CloneSubMeas
Set CloneSubMeas = Nothing

clonesubmeas is set to nothing, though it firstly has been added to measurements

Each vb object has a reference counter and when it becomes 0 again it will free the object, i believe cause they're in measurements they are not freed, sames counts for the next code:
Ws.measurements.Add CloneMeas

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

  Print Answers RSS
Top Experts
Last 24hrsThis month

Advertise | Privacy | Mobile
Web02 | 2.8.170118.1 | Last Updated 27 May 2012
Copyright © CodeProject, 1999-2017
All Rights Reserved. Terms of Service
Layout: fixed | fluid

CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100