Where my memory is alloced, Stack or Heap, Can I find it at Run-time?
Posted
by AKN
on Stack Overflow
See other posts from Stack Overflow
or by AKN
Published on 2010-06-07T09:03:50Z
Indexed on
2010/06/07
9:12 UTC
Read the original article
Hit count: 432
I know that memory alloced using new, gets its space in heap, and so we need to delete it before program ends, to avoid memory leak.
Let's look at this program...
Case 1:
char *MyData = new char[20];
_tcscpy(MyData,"Value");
.
.
.
delete[] MyData; MyData = NULL;
Case 2:
char *MyData = new char[20];
MyData = "Value";
.
.
.
delete[] MyData; MyData = NULL;
In case 2, instead of allocating value to the heap memory, it is pointing to a string literal.
Now when we do a delete it would crash, AS EXPECTED, since it is not trying to delete a heap memory. Is there a way to know where the pointer is pointing to heap or stack?
By this the programmer
- Will not try to delete any stack memory
- He can investigate why does this ponter, that was pointing to a heap memory initially, is made to refer local literals? What happened to the heap memory in the middle? Is it being made to point by another pointer and delete elsewhere and all that?
© Stack Overflow or respective owner