Возможно ли вызвать утечку памяти в Rust? - PullRequest
4 голосов
/ 06 апреля 2019

Есть ли способ вызвать утечку памяти в Rust?Я знаю, что даже в таких языках сборки мусора, как JavaScript, существуют крайние случаи утечки памяти, есть ли такие случаи в Rust?

Ответы [ 2 ]

7 голосов
/ 06 апреля 2019

Да, утечка памяти в Rust так же проста, как вызов функции std::mem::forget.

Вы также можете утечь память, если создаете цикл из общих ссылок :

Цикл между Rc указателями никогда не будет освобожден.По этой причине Weak используется для прерывания циклов.Например, дерево может иметь сильные Rc указатели от родительских узлов до детей и Weak указатели от детей обратно к их родителям.

Вы должны заметить, что утечка памяти не нарушаетБезопасность памяти гарантируется Rust.Однако можно с уверенностью предположить, что в Rust утечки памяти нет, если только вы не делаете что-то «экзотическое».

1 голос
/ 08 апреля 2019

Из книги

Гарантии безопасности памяти в Rust затрудняют, но не делают невозможным случайное создание памяти, которая никогда не очищается (известной как утечка памяти). Полное предотвращение утечек памяти не является одной из гарантий Rust, так же как и запрет гонок данных во время компиляции, что означает, что утечки памяти безопасны в Rust.

Так что ответ - да. У вас могут быть утечки памяти в вашем коде, и компилятор ржавчины не будет жаловаться на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...