In this page there's a piece of code:
class MyString
{
    private:
    char *m_pchString;
    int m_nLength;
public:
    MyString(const char *pchString="")
    {
        // Find the length of the string
        // Plus one character for a terminator
        m_nLength = strlen(pchString) + 1;
        // Allocate a buffer equal to this length
        m_pchString = new char[m_nLength];
        // Copy the parameter into our internal buffer
        strncpy(m_pchString, pchString, m_nLength);
        // Make sure the string is terminated
        m_pchString[m_nLength-1] = '\0';
    }
    ~MyString() // destructor
    {
        // We need to deallocate our buffer
        delete[] m_pchString;
        // Set m_pchString to null just in case
        m_pchString = 0;
    }
    char* GetString() { return m_pchString; }
    int GetLength() { return m_nLength; }
};
In the destructor, the writer sets the m_pchString to null and says just in case. What can happen if we don't set it to null? We have already deallocated specified memory and class members would be killed upon exit. What is the benefit of doing so?
 
     
     
     
    