首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

关于内存申请的有关问题

2012-09-02 
关于内存申请的问题在第二次执行的时候WM_KEYDOWN,即case WM_KEYDOWN结束在触发的时候,TCHAR *TempStr n

关于内存申请的问题
在第二次执行的时候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 )

[解决办法]
探讨
if( *Str != NULL )

热点排行