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


  • Mod

    - 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


Anmelden zum Antworten