Недавно я прочитал эту статью http: // codearcana. ком / сообщений / 2012 / 05 / 06 / обеспечение - и - эксплуатируют -гоу - binaries.html который утверждает в Go, что куча исполняемая. Это вызывает у меня несколько разных вопросов о взаимодействии между средой выполнения и операционной системой.

В C, когда программе требуется место в куче, она вызывает функцию malloc, которая, в свою очередь, вызывает sbrk, который выделяет ей память. Насколько я знаю, в C куча предназначена только для чтения и записи.

Почему куча в Go исполняемая? Чем отличается приложение - взаимодействие ОС в Go от C?

Спасибо

5
Carson Harmon 25 Сен 2018 в 05:33

2 ответа

Лучший ответ

больше не исполняется.

Код был сгенерирован во время выполнения для функциональных литералов до Go 1.1, поэтому требовалась исполняемая куча. Вызовы функций были переработаны в Go 1.1, чтобы исключить необходимость для исполняемой кучи и для обеспечения других преимуществ.

9
Muffin Top 25 Сен 2018 в 04:52

Почему куча в Go исполняемая?

Go heap не исполняется с 2013 года.

5
Foo Bar 25 Сен 2018 в 04:38