C# 數組是引用類型,那麼在內存中是如何存儲的呢?c#
在VS中調試C#程序,如何查看內存、寄存器、反彙編 在這篇文章裏看到了如何在VS 中查看內存數組
先斷點打在數組建立後語句那裏,點debug->Windows->Memory, 選一個隨便memory函數
在immediate window裏 輸入 &變量名 arr,獲取arr的內存地址。學習
&arr
0x009becd8 ----->在堆棧中引用地址
*&arr: 0x02d75cb4 ----->在託管堆中空間的起始地址spa
通過這幾天的快餐知識學習,知道了堆棧中是由高向低填充。託管堆中好像相反,這句話不肯定,由於垃圾回收了一部分,說是把那些有引用的對象都壓縮到一塊兒了。.net
看內存哈~ c8 3b b8 72 09 什麼東西I don't know, if you know, let me know. debug
INT 32, 普通值類型都是結構體。3d
還有一個招,最近才學的,VS裏面自動生成構造函數,輸入ctor,而後點 ctrl+R+E指針
還有一個招,自動生成get,set。 private int _name, 而後點 Tab調試
string和object是惟一預約義的兩個引用類型。
16 在內存中存儲 00 00 00 10
15 在內存中存儲 00 00 00 0F
忽然想反射一下 arr[0].GetType() int32表示的範圍是

正負2的31次方的整數。難道是有一位表示符號位嗎?我猜的。
http://blog.csdn.net/zxsydyq/article/details/9125641 c#中int16 int32 int64區別
long不是真的long,.NET Framework 類型是int64;short不是真的短,.NET Framework 類型是int16.
-2,147,483,648 到 2,147,483,647 int32範圍
16進制的1位=2進制的4位,那麼32位的2進制,須要32/4 = 8 個16位表示。嗯正好,推理正確。
http://blog.csdn.net/acmilanvanbasten/article/details/14521051 同步塊索引syncblock 好的這文章裏還提到了他的大兄弟 類型指針。
變量地址又低到高分配