Re: Stack vs heap

From: Jon Skeet [C# MVP] (skeet_at_pobox.com)
Date: 02/26/04


Date: Thu, 26 Feb 2004 15:43:42 -0000

Rakesh <anonymous@discussions.microsoft.com> wrote:
> I am extremely sorry to have been vague in describing my issue. I am
> not thinking in the OOPS perpective, I am thinking in the internal
> compiler perpective.
>
> Dataset ds = new Dataset();
> static DataSet sds = new Dataset();
> static int x = 0;
>
> From what I understand, the pointer ds is stored in the stack, and
> the object new Dataset() is allocated in the heap.

That depends on where that code is. You've given a snippet without any
context. Given that you've got the "static" modifier, I'll assume that
ds is an instance variable - in which case, no, it's not on the stack,
it's on the heap (as are the other two).

As I said before, see http://www.pobox.com/~skeet/csharp/memory.html
for a more detailed explanation.

-- 
Jon Skeet - <skeet@pobox.com>
http://www.pobox.com/~skeet
If replying to the group, please do not mail me too


Relevant Pages

  • Re: How does managed code work?
    ... Does it work the same way as the native stack with a frame pointer that is the head of a linked list of stack frames where each time we enter a function we create a new stack frame in which new variables are pushed and each time we exit a function the entire stack frame is popped? ... Can someone point me to a discussion of the managed heap? ... How does it prevent memory leaks that occur in COM when two objects reference each other and keep the others reference count nonzero? ... Because objects don't go out of scope, ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Groovy (war Re: [PROST]Re: CDC Plugin fuer Eclipse)
    ... Warum müsste man continuations erlauben Stackvariablen in den Heap zu verschieben? ... Ein activation record speichert die Parameter und lokalen Variablen der Funktion und eine Information, ... Da diese activation records klassischerweise auf einem Stack verwaltet werden, kann man hier Stackspace sparen - Endrekursion ist damit genauso effizient wie eine klassische Iteration mit einem Sprung. ...
    (de.comp.lang.java)
  • Re: Please Explain where will the struct be stored if it is declared inside the Class
    ... forget about structs for a second. ... can be stored either on the stack, or on the heap. ... First, think about the stack. ... A struct would act exactly the same as any of these decimals and ints. ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: Is MSDN wrong? or I made a mistake? about static member function
    ... the heap" or some such reference. ... shouldn't we have a uniform notation? ... You can tell a heap object from a stack object by ... the result of trying to build a compiler on a tiny computer by someone who wasn't a very ...
    (microsoft.public.vc.mfc)
  • Re: Stack, Heap, Mfc
    ... >> is put on the heap. ... >> decendant does this not mean that all memory will be on the heap because ... > stack or the heap. ... You first try to limit the recursion to an acceptable ...
    (microsoft.public.vc.mfc)