【发布时间】:2017-10-03 08:39:54
【问题描述】:
有没有办法 malloc 内存空间,然后在 C 中的空间内复制函数代码?
这个问题在实践中可能没有意义。我出于好奇提出这个问题,以便更好地了解 c 及其底层实现的工作原理。
如果可以将代码复制到堆中,以下是后续问题:
函数二进制码复制时如何确定大小?
我们可以使用函数指针来执行代码吗? (代码放在 malloc 的内存中,出于安全原因,这部分内存可能被标记为不可执行,但我不确定)
【问题讨论】:
-
不。 C++ 不能以这种方式工作。现在,您要解决的真正问题是什么。不,不是关于将函数放入堆中的问题,而是您认为其解决方案涉及将函数放入堆中的真正问题。
-
有关 C/C++ 的问题请使用“C/C++”标签。为了节省您搜索的时间:没有这样的标签,因为没有语言 C/C++。语言 C 和 C++ 是非常不同的语言。把你打算用的Pikc,去掉不相关的标签!
-
两种语言都没有堆或段。这些是实现细节。您必须选择您要求的抽象层。而且您不能将函数指针转换为
void *。 -
在具有特定编译器的特定环境中,您可能会成功破解完全未定义的行为以在堆上执行代码。除了,也许,为了让它工作的快感,这将是一个无用的练习。
-
支持@BasileStarynkevitch:您尝试解决的实际问题是什么?如果这是一些学术问题,您必须添加更多信息。如果 oyu 有实际问题,你很可能使用了错误的方法。无论哪种方式,您都必须提供更多信息。
标签: c memory heap-memory