问题描述
我正在阅读 this 文章(它是关于如何在堆栈段中分配类对象的)并遇到了这个片段。如果我理解正确,他想通过标头(带有锁定对象和类型信息)获取我们 PocoClass
的地址。
TypedReference typedReference = __makeref(heapPoco);
int* poco1Address = (int*)(*(int*)(*(int*)(&typedReference)) - 4);
问题
如果我们知道一个类在实际数据之前还有另外 2 个“对象/信息”,那么我们为什么要从我们的地址中减去 4
(在他的示例中他处于 32 位 模式) ,不应该是2 * 4
,因为我们有一个指向“类型对象”的指针,在此之前我们有“锁定对象”。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)