Я читаю книгу под названием «Язык программирования Go», и во 2-й главе об указателях написано следующее:
Функция совершенно безопасно возвращает адрес локальной переменной.,Например, в приведенном ниже коде локальная переменная v, созданная этим конкретным вызовом f, будет существовать даже после возврата вызова, и указатель p будет по-прежнему ссылаться на него:
var p = f()
func f() *int {
v := 1
return &v
}
Полностью не понимаю, предполагается, что локальная переменная будет уничтожена после выполнения функции.Это потому, что, возможно, v выделяется в куче.Я знаю, что в C, если вы выделите пространство с помощью malloc, оно не будет уничтожено после выполнения функции, потому что оно находится в куче.