1. 程式人生 > >C# 數組在內存中的存儲

C# 數組在內存中的存儲

href size 9.png media work dia spa es2017 get

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

C# 數組在內存中的存儲