The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"70% проблем с безопасностью в Chromium вызваны ошибками при ..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Присылайте удачные настройки в раздел примеров файлов конфигурации на WIKI.opennet.ru.
. "70% проблем с безопасностью в Chromium вызваны ошибками при ..." +1 +/
Сообщение от red75prim (?), 26-Май-20, 18:08 
> Я хочу получить N нодов [...], после чего провернуть какие-то манипуляции над ними, которые изменят все эти N нодов.

И проблема тут в том, что эти N указателей могут алиаситься. Делаем *node[0]=1; *node[1]=2; и получаем, что неожиданно *node[0] теперь тоже 2, так они указываются на один и тот же инт.

Если разные ноды принадлежат разным частям структуры (то есть алиасинг исключён), раст позволит это сделать:

struct Foo { a: Vec<i32>, b: Vec<i32> }

fn nodes(a: &mut Foo) -> Vec<&mut i32> {
    vec![&mut a.a[0], &mut a.b[0]]
}

Если алиасинг действительно нужен, то используется не i32, а Cell<i32> - zero-cost обёртка над i32 говорящая компилятору, что нам действительно нужен мутабельный алиасинг. Потом используем шареные ссылки на Cell<i32> и меняем данные через них. Борроу-чекер доволен.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
70% проблем с безопасностью в Chromium вызваны ошибками при ..., opennews, 24-Май-20, 14:02  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру