【问题标题】:How to persist a function pointer in C?如何在C中保留函数指针?
【发布时间】:2016-02-02 11:01:24
【问题描述】:

假设我有一个函数指针,可以调用它来完成一些任务。如何将指针指向的代码段存储到磁盘上的文件中,以便稍后加载文件并再次使用函数指针?

用例:这将在 JIT 编译器内完成,以防止未来在同一程序的下一次运行中出现 JIT 开销。

编辑:“Save and load function pointers to file”的答案不是我想要的。该问题涉及人们建议使用索引的有限数量的功能。但就我而言,函数可以是任何内容。

【问题讨论】:

  • 你到底想做什么。在 C 中没有这样做的标准方法(尽管在您的特定操作系统上可能有针对您的问题的解决方案)。
  • 你能再解释一下用例吗?
  • 这个问题太宽泛了。
  • @MichaelWalz 编辑后我认为这是一个好问题
  • 嗯..不确定。如果您能够 JIT,那么存储代码对您来说应该不是问题。

标签: c function function-pointers jit


【解决方案1】:

没有便携的方法可以做到这一点。您的选择是:

  • 将指针与您选择的符号名称相关联,例如使用全局映射表,并序列化函数名。在反序列化时,在映射中查找实际的指针。

  • 序列化实际函数名,可能还包含在映射中。在反序列化时,使用dlsym(或非Unix平台上的等效项,例如GetProcAddress)来获取函数指针。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 2018-10-17
    • 2017-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多