"Alexh" <alexh1@sbcglobal.net> wrote in message
news:7fb562ec-a3fe-4faf-8c76-87716709201b@f20g2000prn.googlegroups.com...
class Myclass : public CObject
{
CString MyCstring;
...
The debugger reports that the CString has a bad pointer (all 0's).
*When* is it reporting it?
It isn't at all clear to me that the internal pointer of a CString
cannot legally be NULL. I've always thought it could be, and that the
CString methods allowed for it.
I can't remember if I ever checked, but even if I did, it may be
different in different implementations. But I have always allowed for
the possibility that the standard cast
(LPCTSTR)my_cstring;
might return NULL. If it can, and you assume it doesn't, then you
might run into trouble. But (if I'm right) I can't think where else
the debugger might report a problem?
Dave
Nope. Check out the code for the ATL::CStringT (really the ATL::CSimpleStringT) class templates. You'll see that the m_pszData
member should never be NULL. The (LPCTSTR) cast returns the m_pszData as a string pointer, but it's also expected to be a valid
address that can be manipulated to get to the CStringData object for that string.