Managing memory with reference and value types
There are two categories of memory: stack memory and heap memory. With modern operating systems, the stack and heap can be anywhere in physical or virtual memory.
Stack memory is faster to work with (because it is managed directly by the CPU and because it uses a last-in, first-out mechanism, it is more likely to have the data in its L1 or L2 cache) but limited in size, while heap memory is slower but much more plentiful.
For example, on my macOS, in TERMINAL, I can enter the command ulimit -a
to discover that stack size is limited to 8,192 KB and other memory is "unlimited." This is why it is so easy to get a "stack overflow."
There are two C# keywords that you can use to create object types: class
and struct
. Both can have the same members, such as fields and methods. One difference between the two is how memory is allocated.
When you define a type using class
, you are defining a reference type....