From: Alexh on
Hi all,

Using Vista SP2, Visual Studio 2005 - all of a sudden some code that
has been working forever and not touched starting giving me a bad
pointer on a CString. It couldn't be simpler -

class Myclass : public CObject
{

CString MyCstring;

....

The debugger reports that the CString has a bad pointer (all 0's).

I tried rebooting, cleaning and rebuilding the entire project. Is it
possible something is corrupted and needs to be deleted?

Thanks
From: Ulrich Eckhardt on
Alexh wrote:
> Using Vista SP2, Visual Studio 2005 - all of a sudden some code that
> has been working forever and not touched starting giving me a bad
> pointer on a CString. It couldn't be simpler -
>
> class Myclass : public CObject
> {
>
> CString MyCstring;
>
> ...
>
> The debugger reports that the CString has a bad pointer (all 0's).

Looks like an object that is either not fully constructed or already
destroyed. Impossible to tell without knowing much more about what you are
doing.

I suggest you revert back to the commit that caused the error to appear and
from there on try to distill a minimal example which you can post here.
Well, unless of course you found the mistake yourself on the way.

Uli

--
C++ FAQ: http://parashift.com/c++-faq-lite

Sator Laser GmbH
Geschäftsführer: Thorsten Föcking, Amtsgericht Hamburg HR B62 932
From: Scot T Brennecke on
Alexh wrote:
> Hi all,
>
> Using Vista SP2, Visual Studio 2005 - all of a sudden some code that
> has been working forever and not touched starting giving me a bad
> pointer on a CString. It couldn't be simpler -
>
> class Myclass : public CObject
> {
>
> CString MyCstring;
>
> ...
>
> The debugger reports that the CString has a bad pointer (all 0's).
>
> I tried rebooting, cleaning and rebuilding the entire project. Is it
> possible something is corrupted and needs to be deleted?
>
> Thanks

You clipped out some code, of course. My guess is that was has happened is that some other code has overwritten the object that is
right next to the CString on the stack, thereby corrupting the internal pointer in the CString object.
From: Alexh on
On Sep 21, 12:11 am, Scot T Brennecke <Sc...(a)Spamhater.MVPs.org>
wrote:
> Alexh wrote:
> > Hi all,
>
> > Using Vista SP2, Visual Studio 2005 - all of a sudden some code that
> > has been working forever and not touched starting giving me a bad
> > pointer on a CString. It couldn't be simpler -
>
> > class Myclass : public CObject
> > {
>
> > CString MyCstring;
>
> > ...
>
> > The debugger reports that the CString has a bad pointer (all 0's).
>
> > I tried rebooting, cleaning and rebuilding the entire project. Is it
> > possible something is corrupted and needs to be deleted?
>
> > Thanks
>
> You clipped out some code, of course.  My guess is that was has happened is that some other code has overwritten the object that is
> right next to the CString on the stack, thereby corrupting the internal pointer in the CString object.- Hide quoted text -
>
> - Show quoted text -

Thanks guys,

I took the easy way out and restored a backup.
From: David Webber on

"Alexh" <alexh1(a)sbcglobal.net> wrote in message
news:7fb562ec-a3fe-4faf-8c76-87716709201b(a)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
--
David Webber
Author of 'Mozart the Music Processor'
http://www.mozart.co.uk
For discussion/support see
http://www.mozart.co.uk/mozartists/mailinglist.htm