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  好的這文章里還提到了他的大兄弟 類型指針

變量地址又低到高分配

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM