为什么 Go 中的堆是可执行的?



我最近读了这篇文章 http://codearcana.com/posts/2012/05/06/securing-and-exploiting-go-binaries.html 这在 Go 中声称堆是可执行的。这为我提出了一些关于运行时和操作系统之间交互的不同问题。

在 C 语言中,当一个程序需要堆上的空间时,它会调用 malloc,而 malloc 又调用 sbrk 来提供内存。据我所知,在 C 中,堆只能读写。

为什么 Go 中的堆是可执行的?应用程序有什么不同 - Go 中的操作系统交互与 C 中的操作系统交互有何不同?

谢谢

堆不再可执行。

代码是在运行时为 Go 1.1 之前的函数文字生成的,因此需要一个可执行堆。函数调用在 Go 1.1 中进行了改进,以消除对可执行堆的需求并提供其他好处。

为什么 Go 中的堆是可执行的?

Go heap 自 2013 年以来就不再可执行。

相关内容

  • 没有找到相关文章

最新更新