по поводу GC пришёл в голову интересный вопрос: Если ты возвращаешь указатель на локальную переменную из функции, то GC не должен её собирать, ведь это прадероложительно не мусор. Сишный/плюсовый код их вроде как соберёт и ты получишь dangling pointer. Но вот все ссылки на локальные переменные возвращённые из раст кода останутся валидными. Хоть даже и таких ссылок в расте может быть в рантайме не больше 0.
по поводу GC пришёл в голову интересный вопрос: Если ты возвращаешь указатель на локальную переменную из функции, то GC не должен её собирать, ведь это прадероложительно не мусор. Сишный/плюсовый код их вроде как соберёт и ты получишь dangling pointer. Но вот все ссылки на локальные переменные возвращённые из раст кода останутся валидными. Хоть даже и таких ссылок в расте может быть в рантайме не больше 0.
это очевидно, потому что данные не могу висеть в стеке, потому что стек автоматически разрушается при выходе из функции
ну, стек разрушается как абстракция — структура данных, а по факту стек лежит в той же памяти что и хип и снаружи указатель на хип и указатель на стек без доп инфы не отличишь
ну, стек разрушается как абстракция — структура данных, а по факту стек лежит в той же памяти что и хип и снаружи указатель на хип и указатель на стек без доп инфы не отличишь
только поверх этого указателя при следующем вызове функции что-то другое запишут