Zeiger auf Zeiger sauber allokieren und bereinigen
-
hallo Zusammen,
Ich habe folgende Function geschrieben:
long GetAllUsers(CString **ppstrName, int **ppnGroup)
{
//do something..*ppstrName = new CString[nRecordCount];
*ppnGroup = new int[nRecordCount];//do something..
}Funktion Aufruf:
CString *pstrName = NULL;
int *pnGroup = NULL;GetAllUsers(&pstrName, &pnGroup);
delete [] pstrName;
delete [] pnGroup;Ist das sauber Programmiert?
Und noch ein anderer Fall bitte:
class CUser
{
public:
int *m_pnGroup;
CString *m_pstrName;
void GetIDRight();
}CUser::CUser(CWnd* pParent)
{
m_pnGroup = NULL;
m_pstrName = NULL;
}void CUser::GetIDRight()
{
GetAllUsers(&m_pstrName, &m_pnGroup);
}CUser::~CUser(void)
{
if(m_pnGroup != NULL)
{
delete []m_pnGroup;
m_pnGroup = NULL;
}
if(m_pstrName)
{
delete m_pstrName;
m_pstrName = NULL;
}
}danke für jede Hilfe
-
- code tags
- Wenn du mit Strings arbeiten willst, verwende auch Strings und keine Zeiger auf Strings, sonst kannst du genausogut gleich C-style loslegen
- denk auch mal an std::vector