如何将变量放在内存中的给定绝对地址(使用Visual C ++)

时间:2013-02-09 03:47:08

标签: c++ visual-c++ portable-executable

如何静态告诉Visual C ++将全局变量放在内存中的给定绝对地址,如__attribute__((at(address))) does

1 个答案:

答案 0 :(得分:1)

可以这样做,但我不相信有预先确定的方法,所以需要进行一些实验。即使在用户代码执行开始时在运行时创建变量,我也没有看到太多好处。

因此,首先使用allocate MS 特定的说明符指定部分/段在哪里初始化变量。然后在真实场景中启动应用程序,转储或调试它,并查看变量出现的位置。注意重新安置(有一些方法可以尝试强制执行不重新安置,但不能保证不会一直受到尊重)。另一种方法是在您的应用like this中使用一些代码来查找您定义的部分的地址。

如果由于某种原因无法获得一致的行为,则可以使用this utility来操纵目标文件的虚拟地址。总而言之,除了沿途的障碍,但总体而言我不明白为什么如果你足够坚持,你将无法让它为你的特定场景工作。