LINUX.ORG.RU

История изменений

Исправление anonymous-angler, (текущая версия) :

Вектор Vec<T> и слайсы &[T], &mut [T]. Вектор ты наверяка знаешь что такое. Слайсы - это структуры вида

struct Slice<T> { 
    ptr: *const T, 
    size: usize
}

и

struct SliceMut<T> {
    ptr: *mut T,
    size: usize
}

с проверкой на выход за пределы, эдакие «указатели» со вшитым размером. Случайно забыть размер не выйдет, выход за пределы приведёт к панике. Реально накосячить можно только создавая свою собственную реализацию подобия вектора. Но что-то мне подсказывает, что столь популярная структура просто не смогла бы оказаться дырявой в ядре. Более того можно даже не изобретать колесо, а сделать имплементацию глобального аллокатора на основе vmalloc/vfree и использовать уже готовое, оттестированное.

Исходная версия anonymous-angler, :

Вектор Vec<T> и слайсы &[T], &mut [T]. Вектор ты наверяка знаешь что такое. Слайсы - это структуры вида

struct Slice<T> { 
    ptr: *const T, 
    size: usize
}

и

struct SliceMut<T> {
    ptr: *mut T,
    size: usize
}

проверкой на выход за пределы, эдакие «указатели» со вшитым размером. Случайно забыть размер не выйдет, выход за пределы приведёт к панике. Реально накосячить можно только создавая свою собственную реализацию подобия вектора. Но что-то мне подсказывает, что столь популярная структура просто не смогла бы оказаться дырявой в ядре. Более того можно даже не изобретать колесо, а сделать имплементацию глобального аллокатора на основе vmalloc/vfree и использовать уже готовое, оттестированное.