Re: "delete" causes prog to crash!
- From: Victor Bazarov <v.Abazarov@xxxxxxxxxxxx>
- Date: Tue, 09 Aug 2005 13:50:21 -0400
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: Robby
- Re: "delete" causes prog to crash!
- References:
- "delete" causes prog to crash!
- From: Robby
- "delete" causes prog to crash!
- Prev by Date: "delete" causes prog to crash!
- Next by Date: Re: "delete" causes prog to crash!
- Previous by thread: "delete" causes prog to crash!
- Next by thread: Re: "delete" causes prog to crash!
- Index(es):
Relevant Pages
|