Hello and welcome to our community! Is this your first visit?
Register
Enjoy an ad free experience by logging in. Not a member yet? Register.
Results 1 to 3 of 3
  1. #1
    New Coder
    Join Date
    Mar 2011
    Posts
    25
    Thanks
    1
    Thanked 0 Times in 0 Posts

    Unhappy C++ : "new" gives me the same pointer twice

    Hi,
    I'm not sure what's happening here:

    Fereastra is an instance of fereastra allocated with new.

    I don't remember deleting Fereastra. To be a bit more certain I used IsBadReadPtr to see if Fereastra is cleared, but it seams ok.

    I want to allocate FereastraIcoana with new.

    I end up with FereastraIcoana having the same address as Fereastra.

    Code:
    //test to see if Fereastra is ok	
    if(IsBadReadPtr(Fereastra, 1))
    {
    	int i=0;    //breakpoint here, not entering
    }
    
    //allocate FereastraIcoana with new
    FereastraIcoana=new fereastra(Fereastra->width()-2*bordura_icoana, Fereastra->height()-2*bordura_icoana);
    
    //setting some values
    FereastraIcoana->ascult_evenimente=false;
    FereastraIcoana->move(bordura_icoana, bordura_icoana);
    FereastraIcoana->SetMereuVizibila();
    
    //here is the strange part, test to see if Fereastra (which was allocated sometime earlier) is at the same location as the newly allocated pointer
    if(Fereastra==FereastraIcoana)
    {
    	int i=0;    //breakpoint here, enters here
    }
    no warnings, all values for Fereastra are valid and ok while debugging.

    Do you have any ideas? It's the end of the day and I can't get any further with this error

    I'm using Microsoft Visual c++ 2008

    Thank you

  • #2
    Rockstar Coder
    Join Date
    Jun 2002
    Location
    USA
    Posts
    9,074
    Thanks
    1
    Thanked 328 Times in 324 Posts
    Show where you allocate the memory for Fereastra and show us the implementation of IsBadReadPtr.

    I would do more checking to be certain that you aren't deleting the Fereastra pointer at some point. You could put a breakpoint inside the destructor to know for sure.
    OracleGuy

  • #3
    New Coder
    Join Date
    Mar 2011
    Posts
    25
    Thanks
    1
    Thanked 0 Times in 0 Posts
    The code is to big to post here. That was my thought too, that I deleted the object somewhere... Thank you for the idea of a breakpoint inside the destructor, didn't think of that
    That function (IsBadReadPtr) is a windows function. They say that it doesn't work for all pointers, but if it says it is bad, it is for sure bad

    I don't know where the problem was, but I changed something from a vector of objects to a vector of pointers to objects and it seams to work now. Maybe the Fereastra class in which I am is read twice from that vectror... I hope it won't show up later...
    Last edited by Mihai Zaharescu; 05-02-2011 at 11:33 PM.


  •  

    Tags for this Thread

    Posting Permissions

    • You may not post new threads
    • You may not post replies
    • You may not post attachments
    • You may not edit your posts
    •