Virtual Memory usage for MFc program!! 
Author Message
 Virtual Memory usage for MFc program!!

hello!!
 i am working on a MFC project .. during the execution
virtual memory usage for my program goes to about 250-300
MB. in start it is ok but increase gradually and reaches
this vlaue. All my code do is this ..i am using
NetShareEnum to enumerate network shares.. when i get
share for one PC, i receursively retrieve filenames in
that folder and add them to database. database table
contain almost 1 Million records. i am using ADO for
adding records... neone got ne idea what the problem can
be? and how should i fix it and what should i do to check
it..
i am attaching piece of code whose execution cause this
problem..

//source code

        for(int sk=0;sk<count;sk++)
                {

                stsrv=lphost.GetNext(pos1);

        if(m_eoption==2)   // if the option is toenumerate
IP range
                        {
                        strsrv1=stsrv;
                        strsrv1=GetIPRange(strsrv1);

                if(strsrv1 >= erange1 && strsrv1<=erange2 )
                                        ;
                                else
                                        continue;
                        }

                        stripsrv="\\\\";
                        stripsrv+=stsrv;

                        srv=stripsrv.GetBuffer(0);

        if(m_eoption!=1)  // check if it is single pc op
                                svrname=srv;
                        else    

                        svrname=eoption1.GetBuffer(0);

                                int ierror = 0;

                        // convert to a unicode string
        if ((ierror = MultiByteToWideChar (CP_ACP,
                                MB_PRECOMPOSED,
                                svrname,
                                -1,
                                serverName,
                                36)) == 0)
                        {
AfxMessageBox ("BAD conversion -> bugging out ... !!!");

                        }

        do // begin do
        {

                res = NetShareEnum (serverName,
                                1,
                                        (LPBYTE *)&BufPtr,
                                MAX_PREFERRED_LENGTH,
                                        &er,
                                        &tr,
                                        &resume);

                                //
                                // If the call succeeds,
                                //
        if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
                                {
                                        p=BufPtr;
                                        //
                                        //first delete
previous records
                                        CString ipaddress;
                                        ipaddress=b;
                        if(m_eoption!=1)
                                DeleteRecords(stsrv);  
                        else                            
                        DeleteRecords(eoption1);

//Reduce the working set size of the process    
                                                // Loop
through the entries;
                                        //  print
retrieved data.
                                        //
                for(i=1;i<=er;i++)
                        {

                        a.Empty();              
                        a.FreeExtra();
                a.Format("%-20S",p->shi1_netname);

                        if(a.Find("$")==-1)
                        {

                        a.TrimLeft();
                        a.TrimRight();

                        if(m_eoption!=1)
                        b=srv;
                        else
                        {
                        b="\\\\";
                        b+=eoption1;
                                                        }

        //b="\\\\192.168.61.93";

        AddMainFolders(b,a);

        b+="\\";

        b=b+a;

        b=b + "\\*.*" ;

        SearchFiles(b);        

        hProcess=GetCurrentProcess();

        //SetProcessWorkingSetSize(hProcess, -1, -1);

                                                }
                                                p++;
                                        }
                                        //
                                        // Free the
allocated buffer.
                                        //
                                        NetApiBufferFree
(BufPtr);
                                }
                                else
                                        ;
                                stripsrv.ReleaseBuffer();
                        }
                        // Continue to call NetShareEnum
while
                        //  there are more entries.
                        //
                        while (res==ERROR_MORE_DATA); //
end do
        }



Thu, 15 Sep 2005 20:00:32 GMT  
 Virtual Memory usage for MFc program!!
hello!!
 i am working on a MFC project .. during the execution
virtual memory usage for my program goes to about 250-300
MB. in start it is ok but increase gradually and reaches
this vlaue. All my code do is this ..i am using
NetShareEnum to enumerate network shares.. when i get
share for one PC, i receursively retrieve filenames in
that folder and add them to database. database table
contain almost 1 Million records. i am using ADO for
adding records... neone got ne idea what the problem can
be? and how should i fix it and what should i do to check
it..
i am attaching piece of code whose execution cause this
problem..

//source code

        for(int sk=0;sk<count;sk++)
                {

                stsrv=lphost.GetNext(pos1);

        if(m_eoption==2)   // if the option is toenumerate
IP range
                        {
                        strsrv1=stsrv;
                        strsrv1=GetIPRange(strsrv1);

                if(strsrv1 >= erange1 && strsrv1<=erange2 )
                                        ;
                                else
                                        continue;
                        }

                        stripsrv="\\\\";
                        stripsrv+=stsrv;

                        srv=stripsrv.GetBuffer(0);

        if(m_eoption!=1)  // check if it is single pc op
                                svrname=srv;
                        else    

                        svrname=eoption1.GetBuffer(0);

                                int ierror = 0;

                        // convert to a unicode string
        if ((ierror = MultiByteToWideChar (CP_ACP,
                                MB_PRECOMPOSED,
                                svrname,
                                -1,
                                serverName,
                                36)) == 0)
                        {
AfxMessageBox ("BAD conversion -> bugging out ... !!!");

                        }

        do // begin do
        {

                res = NetShareEnum (serverName,
                                1,
                                        (LPBYTE *)&BufPtr,
                                MAX_PREFERRED_LENGTH,
                                        &er,
                                        &tr,
                                        &resume);

                                //
                                // If the call succeeds,
                                //
        if(res == ERROR_SUCCESS || res == ERROR_MORE_DATA)
                                {
                                        p=BufPtr;
                                        //
                                        //first delete
previous records
                                        CString ipaddress;
                                        ipaddress=b;
                        if(m_eoption!=1)
                                DeleteRecords(stsrv);  
                        else                            
                        DeleteRecords(eoption1);

//Reduce the working set size of the process    
                                                // Loop
through the entries;
                                        //  print
retrieved data.
                                        //
                for(i=1;i<=er;i++)
                        {

                        a.Empty();              
                        a.FreeExtra();
                a.Format("%-20S",p->shi1_netname);

                        if(a.Find("$")==-1)
                        {

                        a.TrimLeft();
                        a.TrimRight();

                        if(m_eoption!=1)
                        b=srv;
                        else
                        {
                        b="\\\\";
                        b+=eoption1;
                                                        }

        //b="\\\\192.168.61.93";

        AddMainFolders(b,a);

        b+="\\";

        b=b+a;

        b=b + "\\*.*" ;

        SearchFiles(b);        

        hProcess=GetCurrentProcess();

        //SetProcessWorkingSetSize(hProcess, -1, -1);

                                                }
                                                p++;
                                        }
                                        //
                                        // Free the
allocated buffer.
                                        //
                                        NetApiBufferFree
(BufPtr);
                                }
                                else
                                        ;
                                stripsrv.ReleaseBuffer();
                        }
                        // Continue to call NetShareEnum
while
                        //  there are more entries.
                        //
                        while (res==ERROR_MORE_DATA); //
end do
        }



Thu, 15 Sep 2005 20:00:34 GMT  
 Virtual Memory usage for MFc program!!

Quote:

> i am attaching piece of code whose execution cause this
> problem..

<snip>
>                    svrname=eoption1.GetBuffer(0);

Can't find any ReleaseBuffer for this!

// Anders



Fri, 16 Sep 2005 10:06:10 GMT  
 
 [ 3 post ] 

 Relevant Pages 

1. Video Memory Usage in C Programs

2. Determining Program Memory Usage

3. Q: How to minimize the memory usage for a Win32 program

4. Question about: Memory usage / Struct alignment (simple C program with MSVC)

5. How to log a VC++ MFC app's Memory Usage

6. MFC and memory usage

7. Q: How to minimize the memory usage for a Win32 program

8. Usage of MFC is Novice C++ Programs by a Beginner

9. Free memory, memory usage

10. Virtual memory and mirrored memory question

11. How to lock a range of virtual memory to physical memory to prevent page fault

12. Obtaining physical memory address from virtual memory address?

 

 
Powered by phpBB® Forum Software