值类型和引用类型变量的存储(Storage of value types and reference type variables).doc
文本预览下载声明
值类型和引用类型变量的存储(Storage of value types and reference type variables)
Storage of value types and reference type variables
First of all, variables are the basic unit for storing information, and for computers, variables are equivalent to one memory space.
Variables in C# can be divided into two types: value type and reference type:
Value types: simple types, structure types, enumerated types
Reference types: classes, delegates, arrays, interfaces.
(1) value types and reference types memory allocation
A value type operates in a stack, and a reference type allocates a storage unit in the heap. Stack at compile time is allocated memory space, a clear definition of a stack in the code, and the reactor is running in the dynamic allocation of memory space, according to the operation of the program dynamic memory allocation size. Therefore, the value type always occupies a predefined number of bytes in memory (for example, int takes 4 bytes, or 32 bits). When a value type variable is declared, the memory space occupied by this variable type is automatically allocated in the stack, and the values contained in this variable are stored. .NET automatically maintains a stack pointer that contains the address of the next available memory space in the stack. The stack is first in and out, and the top variables in the stack always leave the scope before the variables below. When a variable leaves the scope, the stack pointer moves down the number of bytes occupied by the released variable and points to the next available address. Note that variables of a value type must be initialized when used
And the reference type variable is assigned a memory space on the stack, the memory space contains a reference to another memory location, the location is an address that is stored in the managed heap, this variable is the actual value of the place. .NET also automatically maintain a heap pointer, it contains a bunch of lower memory address, but not the heap after first out of the object in the
显示全部