C# 打印内存地址

来源:互联网 发布:js基础知识体系 编辑:程序博客网 时间:2024/05/22 11:51


using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;// Marshal 域名空间using System.Runtime.InteropServices;namespace WindowsFormsApplication3{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        public static string getMemory(object o) // 获取引用类型的内存地址方法          {            GCHandle h = GCHandle.Alloc(o, GCHandleType.WeakTrackResurrection);                      IntPtr addr = GCHandle.ToIntPtr(h);            return "0x" + addr.ToString("X");        }          private void Form1_Load(object sender, EventArgs e)        {            int num_Size =100000000;            var addr = getMemory(num_Size);            SetText("num_Size addr = " + addr);            People pp = new People();            addr = getMemory(pp);           SetText("People addr = " + addr);        }        public void SetText(string txt)        {            textBox1.AppendText(txt + "\r\n");        }    }    [StructLayout(LayoutKind.Sequential)] // 必须要加这个,否则不能计算    public class People    {                public string Name;        public int Age;        public string Sex;    }}













0 0
原创粉丝点击