先说int的大小:32位上,第一位是1是负数,第一位是0是正数,
负数最小值可以用1000000...(31个0)来表示.但正值只能是01111...(31个1来表示)
所以最小的负数是 -2^31=-2147483648
最小的正数是 2^31=2147483648-1=2147483647
==============================================================
再研究一下.net object,每个object有一个overhead field,又由两部分构成:
- type object pointer 在32位机器上,占32bit,就是4个byte
The type object pointer is a pointer to a type description of the object.
This is used to find out what the actual type of an object is, for example needed to do virtual calls.
- sync block index 占32bit,4byte 两者一共是8个bytes
The sync block index is an index into a table of synchronisation blocks.
it also used to generate object hashcode
CLR 分配额新对象内存的时候,就是在 newobjptr 指针指向的 heap 上分配,
不同于c 的内存分配,需要便利object linked list,看哪里有大的内存块,所以连续分配的obj,内存上可能是不连续的
CLR 是直接在newobjptr指针上分配,所以速度比较快,而且保证连续分配的对象,内存上是连续的。
================================================================