【发布时间】:2020-04-27 04:00:01
【问题描述】:
我在堆栈中看到的其他帖子很少,但没有一个真正回答我的问题。 是否可以模拟或以某种方式映射或拥有模拟特定内存地址的驱动程序,否则主机上不存在这些地址?
我正在查看我需要排除故障的一段嵌入式代码,但它从我的电脑上不存在的内存空间读取值。我可以更改地址的一个实例,但是那些不存在的收件人在代码上到处都是,因此将它们全部更改是不切实际的。
【问题讨论】:
-
如果您有一个程序正在访问该程序声明的对象以外的任何地址(这些对象必然存在),那么在该行为完全有意义的范围内,它的效果是特定于C 实现的组合,尤其是它运行的硬件。要在别处运行此类代码,您可能需要虚拟机或类似的全机模拟器。这些存在于许多目标中。但是,您不太可能找到任何类型的轻量级驱动程序或仿真器来掩盖无效的内存访问。
-
在Windows上你可以尝试使用
VirtualAlloc,分配到一个特定的地址