@CNNRNN

Выделяется ли память при передачи slice?

Доброго времени суток!
Допустим у меня массив байтов и мне нужно его превратить в строку.
Для этого я бегу по массиву до нужного байта, создаю срез и передаю в другую функцию.
Как я понял срез это просто ссылки на элементы массива, а значит не будет выделяться память ?
Равноценен ли массив с ссылками на элементы другого массива - срезу ?
  • Вопрос задан
  • 94 просмотра
Решения вопроса 1
ozkriff
@ozkriff
Крабообразный
Как я понял срез это просто ссылки на элементы массива, а значит не будет выделяться память ?

Если вынести за скобки "boxed slice" (Box<[u8]>, см. https://doc.rust-lang.org/reference/types/slice.html ), то обычные срезы (`&[u8]` и `&mut [u8]`) никакой дополнительной памяти не выделяют - только указатель на первый элемент + usize для хранения количества элементов.

Равноценен ли массив с ссылками на элементы другого массива - срезу ?

`[&u8]`? Нет - как минимум потому, что потребует места под хранение указателя на каждый элемент.

Допустим у меня массив байтов и мне нужно его превратить в строку.

https://doc.rust-lang.org/std/str/fn.from_utf8.html
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы