我们可以用C语言将指令存储在动态分配的内存中吗?

Adi*_*369 5 c heap-memory

众所周知,我们可以存储DATA在动态分配的内存中.

但是,我想知道我们是否可以存储NEW INSTRUCTIONSNEW FUNCTIONS堆积?有实际应用吗?

准备面试,如果这不是一个明智的问题,请耐心等待.

rli*_*bby 8

当然是.您认为即时编译器是什么?一些堆栈粉碎攻击的工作原理类似(在堆栈上执行代码,而不是堆).这是现代操作系统防止执行"数据"页面的一个原因.(合法的动态代码生成器必须禁用此类保护.)另请参阅维基百科有关自修改代码的文章.

  • 在"不,不好,远离"的海洋中唯一的答案+1,说"好吧,是的,实际上". (4认同)

ham*_*ene 8

现在的问题是关于C语言,所以答案应该是没有 -没有任何单独的语言定义存储一样对堆函数的任何信息.

但是,如果我们添加实现细节和操作系统(重定位表,页面保护等)的知识,那么是的,这是可能的.例如,自定义动态代码加载器(不使用OS提供的DLL/SO加载)以这种方式工作.