В настоящее время я работаю с векторами и пытаюсь убедиться, что у меня есть массив моего вектора в стеке. Я не могу вызвать Vec::into_boxed_slice
, так как я динамически выделяю место в моем Vec
. Это вообще возможно?
Прочитав Растономикон о как реализовать Vec
, кажется обходить указатели в куче, разыменовывая каждую запись. Я хочу разбить Vec
записей из кучи в стек для быстрого доступа.
Vec
s — это непрерывные выделения памяти. Конечно, сами элементы могут каким-то образом быть блоками или указателями. В любом случае, было бы неплохо связать то, что вы читаете на Растономиконе, и показать, какиеT
вы ожидаете, так что, возможно, ответ может развеять ваше замешательство. - person Caesar   schedule 02.02.2021Vec
всегда являются непрерывными (непрерывный расширяемый тип массива), который лучше всего подходит для локальности. Вы, кажется, запутались между стеком и кучей типов данных и стеком и кучей областей памяти. Я призываю вас исследовать разницу; Я предполагаю, что это прояснит ситуацию. - person Shepmaster   schedule 02.02.2021Vec
), не имеет значения, находятся ли они в стеке или в куче. - person trentcl   schedule 02.02.2021Vec
содержит простой указатель на данные, вот и все. Никакого разрешения, только одно разыменование, точно так же, как с данными (произвольного размера) в стеке. - person user4815162342   schedule 02.02.2021Vec
— это целая книга, фрагмент страниц, расположенных в памяти непрерывно, а не набор страниц, разбросанных по всей библиотеке. Перенос книги из (2/) - person trentcl   schedule 03.02.2021