C# 數組在內存中的存儲

C# 數組是引用類型,那麼在內存中是如何存儲的呢?

 在VS中調試C#程序,如何查看內存、寄存器、反彙編 在這篇文章裏看到了如何在VS 中查看內存

先斷點打在數組創建後語句那裏,點debug->Windows->Memory, 選一個隨便memory

在immediate window裏 輸入 &變量名 arr,獲取arr的內存地址。

&arr
0x009becd8  ----->在堆棧中引用地址
*&arr: 0x02d75cb4  ----->在託管堆中空間的起始地址

 

經過這幾天的快餐知識學習,知道了堆棧中是由高向低填充。託管堆中好像相反,這句話不確定,因爲垃圾回收了一部分,說是把那些有引用的對象都壓縮到一起了。

看內存哈~ c8 3b b8 72 09 什麼東西I don't know, if you know, let me know. 

INT 32, 普通值類型都是結構體。

還有一個招,最近才學的,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  好的這文章裏還提到了他的大兄弟 類型指針

變量地址又低到高分配

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章