【发布时间】:2014-12-22 11:48:43
【问题描述】:
我尝试了一些尝试来运行 Lua 代码,并在其运行槽 C/C++ 时检索其值,但我的应用程序因分段错误而崩溃。
例如。访问不属于我的内存:
到目前为止,我得到了这个。简单的过程,使用 Lua 解释器:
a = {5}
local Cnt1 = 0
local Cnt2 = 0
while true do
Cnt2 = Cnt2 + 1
if(Cnt2 == 100000000) then
Cnt2 = 0
print("Irer: "..Cnt1.." Address: "..tostring(a).." Value: "..a[1])
Cnt1 = Cnt1 + 1
end
end
无限循环实际上是为了保持进程唤醒和表地址不变。
如您所见,我打印了“a”的地址,然后将其从控制台本身复制粘贴到 C(代码块)。之后我编写了另一个程序,我将指针硬编码为内存映射,如下所示:
unsigned char *p = (unsigned char *)0x78C070;
printf("Value: %u",*p);
return 0;
可能的方法是
1)我可以尝试的方式是一个文件,但它真的很慢(硬盘)
2) 内存盘上的文件 - 速度快,但不是每个人都有内存盘。
【问题讨论】:
-
使用
%p打印指针。另外,如果你不介意一些额外的 C 代码,你可以使用mmap来共享内存。 -
这看起来像XY Problem。请给我们一万英尺的景色。
标签: c++ variables interface process lua