关于new之后delete的问题
以下是我写在Global.h中的一个函数,我想根据nRow和nCol的值来动态创建这样大小的矩阵,创建了nRow X nCol个Edit框,
方便我输入矩阵的值,所以可能用了很多new CEdit,和一个new CDialog,但我知道这样new之后,在不用的时候应该删除
它们来释放内存。因为写的是一个全局函数,不知道在那里使用delete才合适,请大家指点一二。谢谢!
BOOL CreateMatrixDlg(int nRow, int nCol,int EditID,int DlgID,int btnID)
{
CDialog *pMatrixDlg=new CDialog;
//Check if new succeeded and we got a valid pointer to a dialog object
if(pMatrixDlg != NULL)
{
BOOL ret = pMatrixDlg->Create(DlgID);
if(!ret) //Create failed.
AfxMessageBox("Error creating Dialog");
pMatrixDlg->ShowWindow(SW_SHOW);
.........
pMatrixDlg->SetWindowPos(&CWnd::wndNoTopMost,(nCx-nWide)/2,\
(nCy-nHight)/2,nWide,nHight,SWP_SHOWWINDOW );
}
else
{
AfxMessageBox("Error Creating Dialog Object");
return FALSE;
}
.............
for (int i=0;i<nRow;i++)
for(int j=0;j<nCol;j++)
{
CEdit *pMatrixData=new CEdit;//这里new了很多
rect.left=(rectClient.left+CxData*(2*j+1)/2)-15;
rect.top=(rectClient.top+CyData*(2*i+1)/2)-10;
rect.right=(rectClient.left+CxData*(2*j+1)/2)+15;;
rect.bottom=(rectClient.top+CyData*(2*i+1)/2)+10;;
pMatrixData->Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE |\
WS_TABSTOP | WS_BORDER,rect,(CWnd*)pMatrixDlg,EditID++);
}
//Create a OK Button
CButton *pBtn=new CButton;//这里也有一个OK按钮
rectBtn.left=(rectClient.right-rectClient.left)/2-30;
rectBtn.right=(rectClient.right-rectClient.left)/2+30;
rectBtn.top=rectClient.bottom-30;
rectBtn.bottom=rectClient.bottom-5;
pBtn->Create("确定",BS_DEFPUSHBUTTON |WS_VISIBLE|WS_CHILD,rectBtn,\
(CWnd*)pMatrixDlg,btnID);
return TRUE;
}
//?????我的delete应该分别放在那?