关于内存申请的问题
在第二次执行的时候WM_KEYDOWN,即case WM_KEYDOWN结束在触发的时候,TCHAR *TempStr = new TCHAR[ 100 ] 就出错了,为什么呢?
- C/C++ code
HRESULT InsertText( TCHAR **Str,DWORD Location,TCHAR Text ){ if( Str != NULL ) { TCHAR *TempStr = new TCHAR[ 100 ]; delete [] *Str; *Str = TempStr; } return S_OK;}/************************************************************************************/ case WM_KEYDOWN: { InsertText( &pTextBox->StrSource,pTextBox->CursorLocation,wParam); InsertText( &pTextBox->StrSource,pTextBox->CursorLocation,wParam); InsertText( &pTextBox->StrSource,pTextBox->CursorLocation,wParam); RECT rc = {0,0,pTextBox->Text->LabelDes.Size.x,pTextBox->Text->LabelDes.Size.y}; pTextBox->Text->TextTexture->Release(); Str2Texture( pTextBox->StrSource,_tcslen( pTextBox->StrSource ), &rc,&pTextBox->Text->TextTexture,pTextBox->Text->FontHeight,pTextBox->Text->FontWidth,DT_WORDBREAK,0,0,&pTextBox->Text->Rows,&pTextBox->Text->TextLocationArray); pTextBox->pCtrlClass->SetPic( pTextBox->Text->TextTexture,pTextBox->Text->idLabel ); } }
[解决办法]
(*Str) = TempStr
[解决办法]
你不是:delete [] *Str;了么?
==============
HRESULT InsertText( TCHAR **Str,DWORD Location,TCHAR Text )
{
if( Str != NULL )
{
TCHAR *TempStr = new TCHAR[ 100 ];
*Str = NULL;
*Str = TempStr;
}
return S_OK;
}
[解决办法]
if( *Str != NULL )
[解决办法]