Публикации по теме 'memory-safety'


Обнаружение использования после перемещения в MSVC 2022
Одним из сомнительных дизайнерских решений в C++ является операция перемещения, представленная в C++11. Задуманная как более быстрая альтернатива копированию объектов, эта операция также привнесла новую ошибку, связанную с безопасностью памяти — ошибку использования после перемещения. В этой статье я хотел бы показать вам, что не так с операцией перемещения, на мой взгляд, и как смягчить проблему использования после перемещения. Прежде чем мы начнем, позвольте мне кратко объяснить, зачем..

Вопросы по теме 'memory-safety'

Использование sysctl(3) для написания безопасного переносимого кода: хорошая идея?
Когда я пишу безопасный код на простом C, мне надоело придумывать произвольные числа для представления ограничений — в частности, максимальный объем памяти, выделяемый для одной строки текста. Я знаю, что всегда могу сказать что-то вроде #define...
228 просмотров
schedule 14.03.2022

Быстрая проверка неприятной сторонней функции в Haskell (GHC)
Я хотел бы использовать библиотеку быстрой проверки Haskell для тестирования кода C. Кажется, самый простой способ сделать foreign import и написать свойство поверх полученной функции haskell. Проблема в том, что если код C вызывает segfault или...
226 просмотров
schedule 16.10.2022

Как предотвратить переполнение буфера/переполнение массива?
Недавно я писал код для пользовательского протокола последовательной связи. Что я сделал, так это то, что я использовал часть (8/16 бит) полученных данных, чтобы указать, насколько велик размер кадра. Основываясь на этих данных, я ожидаю, что что...
950 просмотров

Прояснить значение привязки двух ссылок к ссылкам с разной областью действия к одному и тому же времени жизни в сигнатуре функции.
Я пытался разобраться в модели заимствования и владения Rust. Предположим, у нас есть следующий код: fn main() { let a = String::from("short"); { let b = String::from("a long long long string"); println!("{}",...
140 просмотров

слабый против бесхозного в Swift. Каковы внутренние различия?
Я понимаю использование и поверхностные различия между weak и unowned в Swift: Самый простой пример, который я видел, это то, что если есть Dog и Bone , Bone может иметь слабую ссылку на Dog (и наоборот), потому что каждый может...
1506 просмотров

Почему функция имеет долгосрочный доступ для записи ко всем своим входным и выходным параметрам?
Согласно главе «Безопасность памяти» в Руководстве по языку программирования Swift (для Swift 4.2) есть предложение «Функция имеет долгосрочный доступ для записи ко всем своим входным и выходным параметрам»....
69 просмотров
schedule 29.07.2023