|
Output window is like this
‘Test.exe’: Loaded 'C:\Windows\System32\ntdll.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\kernel32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\user32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\gdi32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\advapi32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\rpcrt4.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\msimg32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\comdlg32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\msvcrt.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\shlwapi.dll'
‘Test.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\shell32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\winspool.drv'
‘Test.exe’: Loaded 'C:\Windows\System32\oledlg.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\ole32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\oleaut32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\winmm.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\oleacc.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\imm32.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\msctf.dll'
‘Test.exe’: Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6002.18005_none_9e50b396ca17ae07\GdiPlus.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\lpk.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\usp10.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\uxtheme.dll'
‘Test.exe’: Loaded 'C:\Windows\System32\dwmapi.dll'
Detected memory leaks!
here i found Detected memory leaks!,but i dont know how can get the location of this memory leak,
how can get at which porint or on wich function memory leaks.
please help me for this.
thanks.
|
|
|
|
|
Can i see your code for loading the bitmap...?
|
|
|
|
|
For buttons i use this.
CBitmapButton m_t_btn;
m_t_btn.LoadBitmaps(IDB_B_N, IDB_B_P, IDB_B_N, IDB_B_P);
m_t_now_btn.SizeToContent();
here IDB_B_N and IDB_B_P
and on dialog box i m using picture ctrl pf bitmap type and provide image id to used
|
|
|
|
|
Is any memmory leak from CBitmapButton class..?
Use this utility separately in a test app to check the behavior...
|
|
|
|
|
actully i dont know how can i detected memory leak in application,
so how can i know memory leak occur from CBitmapButton or not.
|
|
|
|
|
Create a test application that using CBitmapButton class. Use the above code in that application and continuously use that application. Check the usage in Task Manager... It will help you to find the memory leak is from CBitmapButton ...
|
|
|
|
|
if i use application without CBitmapButton code,its still behave like this.
|
|
|
|
|
That means, the problem is not from the CBitmapButton. Now check your dialog skinning code.Just like commenting the code for coloring the dialog or controls.
This way you can find out the exact problem...
|
|
|
|
|
i use this for color
CBrush m_brush;
m_brush.CreateSolidBrush(RGB(241,244,250));
HBRUSH CTest::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
switch (nCtlColor)
{
case CTLCOLOR_EDIT:
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(RGB(255,255,255));
return hbr;
case CTLCOLOR_STATIC:
LOGBRUSH logbrush;
m_brush.GetLogBrush( &logbrush );
pDC->SetTextColor(RGB(0,0,0));
pDC->SetBkColor(logbrush.lbColor);
return m_brush;
case CTLCOLOR_BTN:
case CTLCOLOR_MSGBOX:
case CTLCOLOR_DLG:
return m_brush;
default:
return m_brush;
}
}
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CPen myPen,hpenOld;
CRect rect;
GetClientRect(&rect);
for(int i=0;i<rect.bottom;)
{ myPen.CreatePen(PS_SOLID,1,RGB(241,244,250));
pDC->SelectObject(&myPen);
pDC->MoveTo(0,i);
pDC->LineTo(rect.right,i);
i++;
myPen.DeleteObject();
}
return 1
}
|
|
|
|
|
I cant find any problem in your code... Any way just comment your code in the OnEraseBkgnd and try to sort out the problem... If the problem is still there then we can avoid this one also from the problem list...
|
|
|
|
|
Le@rner wrote: BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CPen myPen,hpenOld;
CRect rect;
GetClientRect(&rect);
for(int i=0;i<rect.bottom;)
{="" mypen.createpen(ps_solid,1,rgb(241,244,250));
="" pdc-="">SelectObject(&myPen);
pDC->MoveTo(0,i);
pDC->LineTo(rect.right,i);
i++;
myPen.DeleteObject();
}
return 1
}
Actually you are filling dialog with RGB(241,244,250) color.
Change the OnEraseBkgnd
BOOL CTest::OnEraseBkgnd(CDC *pDC)
{
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(rect,RGB(241,244,250));
return TRUE;
}
to avoid for loop, unnecessary creation and destroying of pen,and filling dialog background color using LineTo and MoveTo functions.
This one can make you drawing bit faster.modified on Tuesday, March 9, 2010 8:00 AM
|
|
|
|
|
|
Could you post your BitmapButton.cpp here ? Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
CBitmapButton is a Visual studio class.
|
|
|
|
|
OK
Do you have the following in all used *.cpp ?
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
What output comes now after the exiting ?Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
yes i add this in all *.cpp
'Test.exe': Loaded 'C:\Windows\System32\ntdll.dll'
'Test.exe': Loaded 'C:\Windows\System32\kernel32.dll'
'Test.exe': Loaded 'C:\Windows\System32\user32.dll'
'Test.exe': Loaded 'C:\Windows\System32\gdi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\advapi32.dll'
'Test.exe': Loaded 'C:\Windows\System32\rpcrt4.dll'
'Test.exe': Loaded 'C:\Windows\System32\msimg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\comdlg32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msvcrt.dll'
'Test.exe': Loaded 'C:\Windows\System32\shlwapi.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.6002.18005_none_5cb72f96088b0de0\comctl32.dll'
'Test.exe': Loaded 'C:\Windows\System32\shell32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winspool.drv'
'Test.exe': Loaded 'C:\Windows\System32\oledlg.dll'
'Test.exe': Loaded 'C:\Windows\System32\ole32.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleaut32.dll'
'Test.exe': Loaded 'C:\Windows\System32\winmm.dll'
'Test.exe': Loaded 'C:\Windows\System32\oleacc.dll'
'Test.exe': Loaded 'C:\Windows\System32\imm32.dll'
'Test.exe': Loaded 'C:\Windows\System32\msctf.dll'
'Test.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.0.6002.18005_none_9e50b396ca17ae07\GdiPlus.dll'
'Test.exe': Loaded 'C:\Windows\System32\lpk.dll'
'Test.exe': Loaded 'C:\Windows\System32\usp10.dll'
'Test.exe': Loaded 'C:\Windows\System32\uxtheme.dll'
'Test.exe': Loaded 'C:\Windows\System32\dwmapi.dll'
'Test.exe': Unloaded 'C:\Windows\System32\dwmapi.dll'
Detected memory leaks!
Dumping objects ->
{235} normal block at 0x00286728, 145 bytes long.
Data: < % d > C0 25 C9 01 64 00 00 00 80 00 00 00 01 00 00 00
{227} normal block at 0x002866D8, 20 bytes long.
Data: < % > C0 25 C9 01 03 00 00 00 03 00 00 00 01 00 00 00
{226} normal block at 0x00286640, 85 bytes long.
Data: < % D D > C0 25 C9 01 44 00 00 00 44 00 00 00 01 00 00 00
{225} normal block at 0x00286598, 103 bytes long.
Data: < % V V > C0 25 C9 01 56 00 00 00 56 00 00 00 01 00 00 00
Object dump complete.
The program '[3536] Test.exe: Native' has exited with code 0 (0x0).
|
|
|
|
|
1) Try to create, select and delete your background pen outside the drawing loop.
2) Could you post your *.cpp here ? Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Eugen Podsypalnikov wrote: Try to create, select and delete your background pen outside the drawing loop.
thanks its works
|
|
|
|
|
I have this code for allocating memory for 2-d int array.
int **p = (int **)malloc(MAXROW*sizeof(int *));
for(int i = 0; i < MAXROW; i++)
{
p[i] = (int *)malloc(MAXCOL*sizeof(int));
}
How can i optimize this code in one line?http://nnhamane.googlepages.com/
|
|
|
|
|
Nilesh Hamane wrote: How can i optimize this code in one line?
It is unclear to me what your are asking here. Do you mean by using just one dynamic memory allocation? What aspect of the situation are you trying to optimize - code size or speed; initial setup or use?
I am presuming that you are using C and not C++.
There are a variety of options that you can use. If this is really critical for your application, you will probably have to run some tests to see what is best in your situation.
A second possible approach is to do one allocation of col * row ints and explicitly calculate the offset into this array for each access.
A third approach is to keep your first allocation of row pointers to int, supplement it by a second allocation of col * row ints and set each row pointer to a subsequent group of col ints in the second block.Please do not read this signature.
|
|
|
|
|
as Avi told.. here is how it goes..
//FIRST approacc
int* p[MAXROW];
p[0] = (int*)malloc(MAXROW*MAXCOL*sizeof(int));
for(int i=1; i<MAXROW; ++i)
p[i] = p[i-1] + MAXCOL;
//SECOND approach
int **p = (int **)malloc(MAXROW*sizeof(int *));
p[0] = (int *)malloc(MAXCOL*MAXROW*sizeof(int));
for(int i = 1; i<MAXROW; i++)
p[i] = p[i-1] + MAXCOL;
both aproach seems better since all memory allocation is done at once..
|
|
|
|
|
what's wrong with
int * p = (int *) malloc(COLS * ROWS * sizeof(int));
?If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong.
-- Iain Clarke
[My articles]
|
|
|
|
|
Just make a function void Make2DInt(int**& ppToCreate, int iWidth, int iHeight)
and then call it at one line... Check your definition of Irrationality[ ^]
1 - Avicenna
5 - Hubbard
3 - Own definition
|
|
|
|
|
Remove all the white space and new lines?
L u n a t i c F r i n g e
|
|
|
|
|
Don't die, until you do.
|
|
|
|