Tag: bus error

在C中取消引用函数指针以访问CODE内存

我们在这里处理C. 我只是有了这个想法,想知道是否有可能访问存储函数的内存点,比如说foo并将函数的内容复制到内存中的另一个点。 具体来说,我试图让以下工作: #include #include #include void foo(){ printf(“Hello World”); } int main(){ void (*bar)(void) = malloc(sizeof foo); memcpy(&bar, &foo, sizeof foo); bar(); return 0; } 但运行它会出现总线错误: Bus error: 10 。 我正在尝试将函数foo的内容复制到内存bar空间,然后执行新创建的functionbar 。 除了查看这样的事情是否可能之外,没有其他原因可以揭示C语言的复杂性。 我没想到这有什么实际用途。 我正在寻找指导让这个工作,或以其他方式被告知,有理由,为什么这不起作用 编辑查看一些答案并了解读取 , 写入和可执行内存,我刚才意识到可以通过写入可执行内存在C中动态创建函数。