在运行时读取可执行文件中的数

时间:2011-08-19 10:32:03

标签: c++ c ram

天儿真好!

我有一个可执行文件(Unix或Windows - 它应该是交叉编译的)。如果一个人通过任何编辑器打开这个可执行文件并将一些东西写到最后 - 应用程序仍然可以完美运行。 执行时,应用程序及其所有数据加载到RAM。因此,用户编写的文件部分也会加载到内存中。

有没有机会阅读这些数据?

我需要快速访问这些数据。其他解决方法不行,因为它需要太多时间:

  1. 直接从文件(在硬盘上)读取或映射它是不正确的,因为应用程序必须在每次运行时读取此文件,但此应用程序每秒都有大量启动。
  2. 使用共享内存与另一个进程(类似于服务器,其中包含数据)不是交叉编译
  3. 在app和所谓的服务器之间使用管道不够快,imho。
  4. 这就是我决定写一些东西到应用程序结束的原因。

    提前致谢!

1 个答案:

答案 0 :(得分:4)

你是否正在重新发明

我也认为你可能正在优化错误的东西。

  

直接从文件(在硬盘上)读取或映射它是不正确的,因为应用程序必须在每次运行时读取此文件,但此应用程序每秒都有大量启动。

内核[1] 方式比我们更聪明,并且完全能够缓存映射的内容。哎呀,如果你把它映射为只读,那么直接访问程序基本图像中的数据会有没有差异。

[1]:这适用于WIndows和Unix