VS中C#语言获取数据地址,并在内存窗口查看

前言

课余时间想查看数据在内存中的存放,随做此记录,防忘。

一、获取数据地址

代码如下:

        static void Main(string[] args)
        {
            int bst = 270;
            unsafe
            {
                char* cp = (char*)&bst;
            }//断点打在这
        }

监视cp的值可获取地址如下图:
请添加图片描述
可看见存储的数据0e 01,需调换顺序010e转换成10进制为270.

二、需要启动不安全代码

路径:项目->属性->生成->勾选允许不安全代码。

三、指针读取与数据读取

        static void Main(string[] args)
        {
            int bst1 = 99999;
            Int16 bst2 = 9999;
            Int16 bst3 = 9984;

            unsafe
            {
                char* cp = (char*)&bst1;
                Console.WriteLine(Convert.ToString((*cp), 16));
                *(cp + 1) = (char)34;//一个地址存放16位数据
                Console.WriteLine(bst1);

                char* cp2 = (char*)&bst2;
                Console.WriteLine(Convert.ToString((*cp2), 16));
                *(cp2 ) = ((char)bst3);
                Console.WriteLine(Convert.ToString((*cp2), 16));
                Console.WriteLine(bst2);
            }
        }

结果:
在这里插入图片描述
数据99999,16进制为1869F,而第一个打印为869F,表明通过地址输出则输出16位数据。
通过*(cp + 1) = (char)34;更改数据,发现输出2262687的16进制为22869F,而34的16进制正好为22把原先*(cp + 1)地址中的1更改成了22,表明地址是以16位一组计算的。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值