172 похожих чатов

А как дропнуть вектор, что бы не вызывать деаллокацию занятую

его буффером память (я её к этому моменту в другой вектор засунул через Vec::from_raw_parts())?

15 ответов

5 просмотров

forget может какой-нибудь?

а как ты получаешь буффер вектора? into_raw_parts забирает владение вектором и отдает память тебе под контроль, например

а разве тебе не ::into_raw_parts нужен?

Kirill-Kuzminykh Автор вопроса
apachee
а как ты получаешь буффер вектора? into_raw_parts ...

let capacity = values.capacity(); let ptr = values.as_mut_ptr();

Я так чисто по ламерски, но может Vec<Option<T>> при занулвании значений оставит прежнюю память?)

Kirill Kuzminykh
let capacity = values.capacity(); let ptr = values...

а зачем так, когда есть into_raw_parts, который получает эти значения и дропает вектор

Kirill-Kuzminykh Автор вопроса
apachee
а зачем так, когда есть into_raw_parts, который по...

Он не стабильный и мне не надо его сразу дропать. Мне надо из него последовательно считать значения сконвертить их в другой тип и запихнуть в тот новый вектор, который я создал на основе буфера первого. Т.е. мне надо сконвертить Vec<f64> в Vec<i32> не выделяя новой памяти.

Kirill Kuzminykh
Он не стабильный и мне не надо его сразу дропать. ...

2 вектора с одним буфером ты использовать одновременно не можешь, если что

Kirill-Kuzminykh Автор вопроса
вафель 🧇🍓
2 вектора с одним буфером ты использовать одноврем...

Почему же не могу - вроде всё нормально заработало. И да, пришлось заюзать unsafe, что бы создать новый вектор из указателя на буфер первого вектора.

Kirill Kuzminykh
Он не стабильный и мне не надо его сразу дропать. ...

из той же памяти создавать вектор с другим типом - а не УБ ли это :)) тут всякие моменты с align, освобождением памяти, размером границ встают.

Kirill-Kuzminykh Автор вопроса
вафель 🧇🍓
Ну как что, UB у тебя)

С чего бы? i32 в два раза меньше чем f64. Я в цикле читаю последовательно все f64, и потом в этот же буфер записываю i32. i32 никогда не догонят f64.

Kirill Kuzminykh
С чего бы? i32 в два раза меньше чем f64. Я в цикл...

У тебя 2 вектора существуют одновременно?

Похожие вопросы

Обсуждают сегодня

@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Подобного рода ;Следующие три строки это директивы ассемблера, ;которые можно не задавать, т.к.работаем в Visual Studio. ;Символ ";" - это начало однострочного комментария ...
Егор Анелькин
3
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Кто-нибудь знает почему SPM клонирует репо целиком? Некоторые репы просто огромные, как та же swift-syntax которая нужна для использования макросов. Сначала подумал, что это...
iMike
6
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Привет. Я верно понимаю, что в определении класса Монад m — зафиксирован (к тому же поскольку это моноид в категории эндофункторов). Т.е. используя байнд я не могу перемещать...
Arseny
5
еще вопрос, допустим мы создадим char массив из 10 элементов и присвоим ему через сканф 10 символов. и выведем все символы. Хотел спросить последний элемент /0 будет включать...
Anthem
11
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
Карта сайта