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: 400

Filed under:
|
|

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

Related posts about c++

Related posts about heap-memory