Junior — Middle
Оё мумкин аст муайян кард, ки тағирот дар стек ё дар минтақаи хотираи хеш нигоҳ дошта мешавад?
sobes.tech AI
Ҷавоб аз AI
Дар забони Go, роҳи мустақим барои муайян кардани он ки тағирот дар куҷо нигоҳ дошта мешавад — дар стек ё дар ҳосил нест. Инро компилятор дар давраи компилятсия тавассути таҳлили escape қарор медиҳад. Агар тағирот аз функсия "қочқон" кунад (масалан, баргардонида шавад ё дар структураи глобалӣ нигоҳ дошта шавад), он дар ҳосил ҷойгир мешавад; дар ғайри ҳол — дар стек.
Масалан:
func f() *int {
x := 10
return &x // x "қочқон" мекунад дар ҳосил
}
func main() {
p := f() // p ишора мекунад ба ҳосил
}
Ин ҷо, тағирот x дар ҳосил ҷойгир мешавад, зеро суроғаи онро аз функсия бармегардонад. Аммо ҷойгиршавии дақиқи тағирот дар ёдгирӣ танҳо бо истифода аз воситаҳои дохилии компилятор ё профайлёрҳо муайян кардан мумкин аст, на бо коди стандартӣ.