Click here to Skip to main content
15,920,508 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: List box scroll to bottom Pin
Roger Stewart4-Dec-02 13:36
professionalRoger Stewart4-Dec-02 13:36 
GeneralRe: List box scroll to bottom Pin
georgiek504-Dec-02 15:17
georgiek504-Dec-02 15:17 
GeneralKeyboard response in a dialog, not the main window--thanks a lot Pin
Sean_Yang4-Dec-02 9:59
Sean_Yang4-Dec-02 9:59 
GeneralRe: Keyboard response in a dialog, not the main window--thanks a lot Pin
RicoH5-Dec-02 1:35
RicoH5-Dec-02 1:35 
GeneralRe: Keyboard response in a dialog, not the main window--thanks a lot Pin
Sean_Yang5-Dec-02 7:03
Sean_Yang5-Dec-02 7:03 
GeneralRe: Keyboard response in a dialog, not the main window--thanks a lot Pin
RicoH5-Dec-02 7:37
RicoH5-Dec-02 7:37 
GeneralRe: Keyboard response in a dialog, not the main window--thanks a lot Pin
Sean_Yang5-Dec-02 8:33
Sean_Yang5-Dec-02 8:33 
GeneralHELP! silly memory release problem( forJames.R.Twine) Pin
smartptr4-Dec-02 9:46
smartptr4-Dec-02 9:46 
Hello gurus,
I have a similar question to what was discussed
here


Suppose I have a function to split a text file into 10 parts like (The first 9 parts are 90% of the total text and the last part contains whatever remaining).

When the dialog closes I have a memory leak problem related to pBuffer which I'm not releasing, as is expected. How and where do I free pBuffer?


the code goes like(not too commented)


BOOL CReadPercentDlg::ReadPercent(LPCTSTR strFileName)<br />
{<br />
HANDLE hTheFile;<br />
hTheFile = CreateFile(strFileName,GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);<br />
if(!hTheFile)<br />
	return FALSE;<br />
DWORD dwFileSize = ::GetFileSize(hTheFile, NULL );<br />
DWORD dw10Percent = (DWORD)( dwFileSize *.10 );<br />
BYTE *pBuffer = new BYTE[ dw10Percent ];<br />
<br />
    if( !pBuffer )<br />
    {<br />
        TRACE("Not enough mmemory");<br />
		return FALSE;//( ERROR_NOT_ENOUGH_MEMORY );<br />
    }<br />
	<br />
	DWORD dwStatus = 0;<br />
        DWORD dwRead = 0;<br />
	DWORD dwTotalRead = 0;<br />
//read each 10% section of a file<br />
	for(int i=0;i<9;i++)<br />
	{<br />
		<br />
            dwStatus = ::ReadFile( hTheFile, pBuffer, dw10Percent, &dwRead, NULL );<br />
		if( dwStatus != ERROR_SUCCESS )<br />
		{<br />
<br />
		}	<br />
	<br />
		//int nLen = strlen((LPSTR)pBuffer);<br />
		pBuffer[dw10Percent] = '\0';<br />
//		TRACE((LPSTR)pBuffer);<br />
		OutputDebugString((LPSTR)pBuffer);<br />
		dwTotalRead+=dw10Percent;<br />
	}<br />
<br />
	pBuffer[0] = '\0';	<br />
//-> cannot do next line ??<br />
//	delete pBuffer;<br />
	pBuffer = NULL;<br />
//now calculate whatever is remaining<br />
	DWORD dwLeft = 0;<br />
	dwLeft = dwFileSize - dwTotalRead;<br />
	if(dwLeft!=0)<br />
	{<br />
		TRACE("\nLeft %u",dwLeft);<br />
//		delete pBuffer;	<br />
//		pBuffer[0] = '\0';<br />
//		pBuffer = NULL;	<br />
<br />
		pBuffer = new BYTE[dwLeft];<br />
		if(pBuffer==NULL)<br />
			return FALSE;<br />
<br />
		dwStatus = ::ReadFile( hTheFile, pBuffer, dwLeft, &dwRead, NULL );<br />
		if( dwStatus != ERROR_SUCCESS )<br />
		{<br />
<br />
<br />
<br />
		}	<br />
		pBuffer[dwLeft] = '\0';<br />
		TRACE("\nLast :\n");<br />
		TRACE((LPSTR)pBuffer);<br />
		//where do I release pBuffer?<br />
		//the line below causes an assertion failure.<br />
		//memory check error at 0x004228B7 = 0x00, should be 0xFD.<br />
<br />
		//delete []pBuffer;<br />
		//	pBuffer = NULL;<br />
	}<br />
<br />
	//where do we free pBuffer?<br />
	//following line again causes <br />
	//memory check error at 0x004228B7 = 0x00, should be 0xFD.<br />
	//	delete[] pBuffer;<br />
	//but if I do not release pBuffer by now, I get a memory leak.<br />
	pBuffer = NULL;<br />
	return TRUE;<br />
<br />
}


Also, is there any better way to read in such percents of text files?

Thanks a lot in advance.Smile | :)



Looking for a lurking sig!
GeneralRe: HELP! silly memory release problem( forJames.R.Twine) Pin
Christian Graus4-Dec-02 9:52
protectorChristian Graus4-Dec-02 9:52 
GeneralRe: HELP! silly memory release problem( forJames.R.Twine) Pin
smartptr4-Dec-02 9:56
smartptr4-Dec-02 9:56 
GeneralRe: HELP! silly memory release problem( forJames.R.Twine) Pin
Christian Graus4-Dec-02 10:33
protectorChristian Graus4-Dec-02 10:33 
GeneralRe: HELP! silly memory release problem( forJames.R.Twine) Pin
Navin4-Dec-02 10:37
Navin4-Dec-02 10:37 
GeneralFailed Serialize function Pin
act_x4-Dec-02 9:37
act_x4-Dec-02 9:37 
GeneralProblem with Dumping Object (new of MFC) and FreeLibrary Pin
leander4-Dec-02 8:33
leander4-Dec-02 8:33 
GeneralRe: Problem with Dumping Object (new of MFC) and FreeLibrary Pin
Nick Parker4-Dec-02 8:56
protectorNick Parker4-Dec-02 8:56 
GeneralRe: Problem with Dumping Object (new of MFC) and FreeLibrary Pin
Ranjan Banerji4-Dec-02 9:26
Ranjan Banerji4-Dec-02 9:26 
GeneralRe: Problem with Dumping Object (new of MFC) and FreeLibrary Pin
leander4-Dec-02 21:58
leander4-Dec-02 21:58 
GeneralRe: Problem with Dumping Object (new of MFC) and FreeLibrary Pin
Alvaro Mendez4-Dec-02 9:34
Alvaro Mendez4-Dec-02 9:34 
Generaldrag on hDC Pin
Nicolas Siatras4-Dec-02 7:28
Nicolas Siatras4-Dec-02 7:28 
GeneralDrawing on a device independent bitmap Pin
David F Zimny4-Dec-02 6:50
David F Zimny4-Dec-02 6:50 
GeneralRe: Drawing on a device independent bitmap Pin
Christian Graus4-Dec-02 9:55
protectorChristian Graus4-Dec-02 9:55 
GeneralRe: Drawing on a device independent bitmap Pin
Paul M Watt4-Dec-02 14:44
mentorPaul M Watt4-Dec-02 14:44 
GeneralDisplaying Image From Data Array Pin
Rooster764-Dec-02 4:51
Rooster764-Dec-02 4:51 
GeneralRe: Displaying Image From Data Array Pin
Maximilien4-Dec-02 4:54
Maximilien4-Dec-02 4:54 
GeneralRe: Displaying Image From Data Array Pin
Chris Losinger4-Dec-02 4:58
professionalChris Losinger4-Dec-02 4:58 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.