2

我想为我的 postscript 解释器添加一个快速启动功能,这样它就可以绕过冗长的(-ish)初始化例程并立即开始执行用户程序。因此,我将所有解释器内存设计为包含在内存映射文件中。进入该内存的所有内部“指针”实际上都是从基指针到内存文件开头的整数字节偏移量。所以,我想我已经在设计中为此做好了准备。

我关心的是包含函数指针的运算符表。我想 C 本身在这方面没有提供任何保证,但是我可以假设指向静态链接函数的函数指针对于同一可执行文件的单独运行将保持不变吗?这是否取决于虚拟内存的存在?POSIX 是否解决了这个问题?

使用 Cygwin,我似乎每次都得到相同的指针值。但是,测试永远不能证明没有错误

编辑:在我的辩护中,效率并不是这里唯一的目标。封装内存使用是一个更大的目标(以快速启动作为奶酪)。封装对调试也有很大帮助。

4

1 回答 1

1

也许。不要依赖它。

正如 Mat 评论的那样,ASLR 随机化地址。所以当它被启用时,你不会得到相同的指针。
没有它,您可能会得到相同的指示。但是环境中的微小变化(可能是您正在使用的库中的补丁)会破坏这一点。所以你会有一个非常不可靠的程序。

于 2013-08-04T07:41:03.287 回答