【发布时间】:2017-05-08 20:50:14
【问题描述】:
让我相当好奇的是,由于在 C++ 中可以在适当的情况下将函数作为参数传递,这表明任何处理该函数的内部代码都可以被指向或以其他方式写入和读取到二进制文件中作为它的可执行代码。
这显然来自某人,虽然我可能在 C++ 方面有很强的背景,但我不熟悉堆中内存管理方式的复杂内部结构,尤其是可执行机器代码如何适应图片。
我假设由于可以传递对函数的引用,因此可以获取它指向的数据并将其写入某处。我不知道。
有人想告诉我这是否可能吗?如果是这样,你能举个例子吗?如果不是,请告诉我为什么!我喜欢更深入地了解 C++ 在内部是如何工作的。
【问题讨论】:
-
我不能给你一个例子,但是你可以想象函数指针只是说:嘿,这是一个你可以调用的可执行代码。
-
考虑什么是可执行文件... ;P
-
@rekire 看,这也是我的思考过程。显然,可执行代码必须存在于内存中的某个位置才能运行,但我从未真正尝试过获取它并将其写入文件。当我想到真正奇怪的、开箱即用的解决方案来将函数保存在文件中,然后让我的程序能够加载和执行它们时,这个想法就出现了。大声笑。
-
我不完全确定这种东西的实际应用,但这是一个非常有趣的思想实验,我认为尝试一下会很酷。
-
您在第一条评论中写的内容类似于共享库,例如 windows 中的 .dll 文件或 linux/unix 中的 .so 文件
标签: c++ function file io binary