当前位置: 首页 > news >正文

滨州网站设计wp如何做引擎网站

滨州网站设计,wp如何做引擎网站,wordpress博客投稿,培训类网站模板最近在看 C 类继承中的字段内存布局#xff0c;我就很好奇 C# 中的继承链那些 private 字段都哪里去了? 在内存中是如何布局的#xff0c;毕竟在子类中是无法访问的。一#xff1a;举例说明 为了方便讲述#xff0c;先上一个例子#xff1a;internal class Program{stati… 最近在看 C 类继承中的字段内存布局我就很好奇 C# 中的继承链那些 private 字段都哪里去了? 在内存中是如何布局的毕竟在子类中是无法访问的。一举例说明 为了方便讲述先上一个例子internal class Program{static void Main(string[] args){Chinese chinese  new Chinese();int num  chinese.b;   //b 字段无法访问编译报错Console.WriteLine(num);}}public class Person{public int a  10;private int b  11;}public class Chinese : Person{public int c  12;}根据 C# 的类继承原则上面的 chinese.b 写法肯定是无法被编译的因为它属于父类的 私有字段既然无法被访问那这个 private b 到底去了哪里呢要想找到答案只能先从 chinese 实例处的汇编代码看起看看有没有什么意外收获。二查看 chinese 处汇编代码 在 new chinese() 处下一个断点查看 Visual Stduio 2022 的反汇编窗口。接下来我稍微解读下1. 根据 MT 类型 实例化 chinese07FD6176  mov         ecx,87205C4h   07FD617B  call        CORINFO_HELP_NEWSFAST (06E30C0h)这里的 87205C4h 就是 Chinese 类型的 MT然后通过 CLR 下的 CORINFO_HELP_NEWSFAST 处的方法进行实例化。2. 使用 chinese 的构造函数进行类初始化07FD6180  mov         dword ptr [ebp-40h],eax   07FD6183  mov         ecx,dword ptr [ebp-40h]   07FD6186  call        CLRStub[MethodDescPrestub]7e34871e07fd5d20 (07FD5D20h) 07FD618B  mov         eax,dword ptr [ebp-40h]这里的 eax 是 CORINFO_HELP_NEWSFAST 初始化方法的返回值可以在 ecx,dword ptr [ebp-40h] 处下一个断点观察它的内存布局。从布局图看此时的 chinese 只是一个清零的默认状态此时的 a,b,c 三个字段还没有被赋值那什么时候被赋值呢这就是构造函数要做的事情了也就是上面的 CLRStub[MethodDescPrestub]7e34871e07fd5d20 (07FD5D20h) 指令接下来在 07FD618B 处下一个断点再次观察 0x02C9F528 处的内存地址也就是 ebp-40 的位置接下来我们继续执行截图如下从图中可以看到当构造函数执行完之后有三处内存地址(变红被赋值了依次是 a,b,c这时候是不是让人眼前一亮。3. 洞察真相原来那个 b11 并没有丢而是被 chinese 类给完全继承下来的而且布局规则是 父类 字段在前 子类 字段在后的一种方式有点意思接下来的问题是如何把它提取出来三如何提取 b 字段 如果是 C 语言我们用 *(pointer2) 就可以轻松提取那用托管的 C# 如何去实现呢? 可以用复杂的 Marshal 包装类应该也可以变相的使用 Span 去搞定这里我就不麻烦了直接用非安全代码下的 指针 去摆平在 a 字段偏移 4 的位置上提取 参考代码如下static void Main(string[] args){unsafe{Chinese chinese  new Chinese();fixed (int* ch  chinese.a){int b  *(ch  1);Console.WriteLine($b{b});}}}}哈哈是不是挺有意思。
http://www.zqtcl.cn/news/745763/

相关文章:

  • 网站 框架网页建设title:(网站建设)
  • 素材网站推广方案安卓端开发
  • 网站制作可以询价么168推广
  • 河南城乡和住房建设厅网站网络营销的主要特点有哪些
  • 哪些网站可以做自媒体wordpress 左侧
  • joomla! 1.5 网站建设基础教程丹阳网站推广
  • 中国建设银行山东省分行网站怎么做网站制作
  • 网站前台设计方案自助建站一般适用于大型电子商务网站建设
  • 建设银行不良资产处置网站wordpress啥时候出现的
  • 出口贸易网站网站建设及解决方案
  • 网站服务器要求做网站需要的服务器
  • 网站后台 编辑器 调用网站优化搜索排名
  • 汽车网站建设规划书网站首页版式
  • 国外网站推广方法wnmp 搭建WordPress
  • 网站建设流程 文档企业网上办事大厅
  • .net怎么做网站域名备案注销流程
  • 检测网站建设网站搭建注意事项
  • 河北建设工程信息网站网站的建设要多少钱
  • 玉林住房和城乡建设局网站官网google广告在wordpress
  • 海淀网站建设公司wordpress 招聘网站模板
  • 手机网站在哪里找到网上能免费做网站发布叼
  • 网站设置英文怎么说广州优质网站建设案例
  • 外贸怎样做网站临汾花果街网站建设
  • 专业集团门户网站建设方案南昌医院网站建设
  • 用php做美食网站有哪些新建网站如何做关键词
  • 企业网站建设招标微信公众平台官网登录入口网页版
  • 网站宣传图网站程序预装
  • 网站设计论文选题seo排名优化推广报价
  • wordpress图床网站百度链接收录
  • 八年级信息网站怎么做电商网站的支付接入该怎么做呢