Re: "delete" causes prog to crash!
- From: "Robby" <Robby@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Tue, 9 Aug 2005 11:04:05 -0700
Hi Victor,
I just used one "new" statement in my code at define time, and so why the
crash! here is the whole code:
#include <iostream>
using namespace std;
class codes
{
public:
codes();
~codes();
void progCode(int n1);
int returnCode() const;
private:
int theCode;
};
codes::codes():
theCode(9999)
{}
codes::~codes()
{}
void codes::progCode(int n1)
{
theCode = n1;
}
int codes::returnCode() const
{
return theCode;
}
int main()
{
int alarmCode;
int * pTempVal = new int;
codes myCodes;
alarmCode = myCodes.returnCode();
pTempVal = &alarmCode;
cout << "Current alarm code is:" << alarmCode << "\n" << "******:" <<
*pTempVal ;
cin >> alarmCode;
myCodes.progCode(alarmCode);
alarmCode = myCodes.returnCode();
cout << "Current alarm code is now:" << alarmCode << "\n"
<< "******:" << *pTempVal ;
cin >> alarmCode;
delete pTempVal;
return 0;
}
--
Best regards
Robert
"Victor Bazarov" wrote:
> Robby wrote:
> > I have declared a pointer on the heap (freeStoreMemory) as:
>
> No, you have declared a pointer and initialised it with the address of
> an int from the heap.
>
> > int * pTempVal = new int;
> >
> > I assign the pointer an address,
>
> Where? How? Why? It already has a value -- the address of an integer
> you allocated on the heap.
>
> > then I dereference it and all is fine!
> > However, in the book I am reading, they strongly suggest to delete your
> > pointer so you free up the memory.
> >
> > however when the program gets to the following line, the program crashes!
> >
> > delete pTempVal;
> >
> > Here is the error:
> >
> > Debug assertion failed.....
> > _BLOCK_TYPE_IS_VALID(phead->nBlockUse)....
> > See C++ documentation....
> >
> > Why does it react this way?
>
> Because if you assign another value to the pointer you first obtained
> from 'new', you (a) lose the previous pointer and (b) probably attempt
> to 'delete' what was never allocated using 'new' in the first place.
>
> > And the program compiles without errors or
> > warnings!
>
> Undefined behaviour (like freeing memory you didn't obtain from 'new')
> never shows up at compile-time.
>
> V
>
.
- Follow-Ups:
- Re: "delete" causes prog to crash!
- From: Bob Milton
- Re: "delete" causes prog to crash!
- References:
- "delete" causes prog to crash!
- From: Robby
- Re: "delete" causes prog to crash!
- From: Victor Bazarov
- "delete" causes prog to crash!
- Prev by Date: Re: "delete" causes prog to crash!
- Next by Date: Re: "delete" causes prog to crash!
- Previous by thread: Re: "delete" causes prog to crash!
- Next by thread: Re: "delete" causes prog to crash!
- Index(es):
Relevant Pages
|
Loading