有没有一种方法可以实现malloc内存空间,然后在C空间中复制函数代码?
这个问题在实践中可能没有意义。出于好奇,我提出这个问题,以便更好地了解c及其底层实现的工作原理。
如果可以将代码复制到堆中,下面是后续问题:
发布于 2017-05-05 02:07:28
这在大多数机器上都是可能的,但您所使用的技术是特定于系统的--没有标准的C或C++方法。
即使计算出函数的长度,以便您可以复制它,也是很困难的。我认为如果函数位于同一个转换单元中,您就无法可靠地完成这一任务,因为编译器可能已经完成了您看不到的优化魔术。但是,如果函数位于不同的文件中,那么它的接口可能会更可靠(尽管可能会有链接器的魔力,您必须理解和模仿才能完成您的目标)。
其他问题(在某些系统上)是,malloc的内存可能无法执行。(这通常是通过防止执行放置在溢出缓冲区中的代码来提高安全性的情况。)但是,具有可执行文件保护的系统通常有一个备用内存分配函数,它可以为您提供一块内存,可以在其中放置可执行代码,并将执行传递到其中。为了实现共享库,需要对此特性进行一些修改。
最后,尽管自修改代码可能是人们在考虑您的问题时可能首先想到的事情,但是合理、合法地使用相关技术可能会出现在本机代码中,即即时编译系统中。
您可以通过指定要这样做的特定操作系统和CPU来获得更好的答案。
https://stackoverflow.com/questions/43795213
复制相似问题