Whats difference between stack and heap in C#?

C

COHENMARVIN

I'm reading that the stack is where 'value' types are created, and the
heap is where reference objects are allocated but I'm wondering if
these are just 2 arbitrary sections of memory, or there is more to it.
Also on a somewhat related topic, in C++ I've read that a DLL is in a
separate section of memory with its own variables. Is this true also
in C#? If you have 10 assemblies all calling the same DLL, where are
the 10 copies of the DLL variables kept? And what is the relationship
between DLL and assemblies? Is a DLL just a module in an assembly?
Thanks,
Marvin
 
J

Jon Skeet [C# MVP]

I'm reading that the stack is where 'value' types are created, and the
heap is where reference objects are allocated but I'm wondering if
these are just 2 arbitrary sections of memory, or there is more to it.

Well, there's slightly more to it - and there's certainly more to it
than "value types go on the stack" but broadly speaking you only need
to worry about stack vs heap.

It can be argued (http://csharpindepth.com/ViewNote.aspx?NoteID=41)
that you shouldn't care even that far. That sounds okay until your
stack overflows :)
Also on a somewhat related topic, in C++ I've read that a DLL is in a
separate section of memory with its own variables. Is this true also
in C#? If you have 10 assemblies all calling the same DLL, where are
the 10 copies of the DLL variables kept? And what is the relationship
between DLL and assemblies? Is a DLL just a module in an assembly?

There aren't 10 different copies - there'll just be the one, assuming
you've only got a single AppDomain.

A DLL is usually a whole assembly, not just a module.

Jon
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top