Описание тега memory-safety
Безопасность памяти - это проблема при разработке программного обеспечения, целью которой является предотвращение программных ошибок, которые вызывают уязвимости безопасности, связанные с доступом к оперативной памяти (ОЗУ), такие как переполнение буфера и висячие указатели.
2
ответа
Почему заимствования членов структуры допускаются в &mut self, но не в self неизменным методам?
Если у меня есть структура, которая инкапсулирует два члена и обновляет один из них на основе другого, это нормально, если я делаю это следующим образом: struct A { value: i64 } impl A { pub fn new() -> Self { A { value: 0 } } pub fn do_something…
18 мар '17 в 19:50
8
ответов
Переполнение буфера работает в GDB, но не без него
Я нахожусь на CentOS 6.4 32 бит и пытаюсь вызвать переполнение буфера в программе. В GDB это работает. Вот вывод: [root@localhost bufferoverflow]# gdb stack GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1) Copyright (C) 2010 Free Software Fou…
21 июл '13 в 17:55
1
ответ
Как я могу вручную обнулить память?
Можно ли вручную удалить содержимое объекта из памяти? В частности, я имею дело с NSData, Я пытался использовать data.length = 0 а также data.setData(NSData), я знаю ARC придет и вычистит его после того, как он выйдет за рамки, кому он принадлежит, …
10 июн '16 в 17:06
3
ответа
Уточнить смысл связывания двух ссылок на ссылки разной области действия с одним и тем же временем жизни в сигнатуре функции
Я пытался разобраться в модели заимствования и владения Rust. Предположим, у нас есть следующий код: fn main() { let a = String::from("short"); { let b = String::from("a long long long string"); println!("{}", min(&a, &b)); } } fn min<'a&…
15 мар '17 в 10:53
1
ответ
Почему функция имеет долгосрочный доступ на запись ко всем входным и выходным параметрам?
Согласно главе "Безопасность памяти" в Руководстве по языку программирования Swift (для Swift 4.2), есть предложение "Функция имеет долгосрочный доступ для записи ко всем своим входящим и исходящим параметрам". https://docs.swift.org/swift-book/Lang…
28 янв '19 в 02:55
2
ответа
Предпочтительный способ построения струн в D
Каков предпочтительный способ построения строк относительно атрибутов функции @safe, pure а также nothrow а во время компиляции и во время выполнения функции родительских функций? Должны ли мы использовать, например, format("Variable x=%s should equ…
01 сен '13 в 20:27
3
ответа
Как Rust обеспечивает безопасность указателя только во время компиляции?
Я где-то читал, что на языке, в котором есть указатели, компилятор не может полностью решить во время компиляции, правильно ли все указатели используются и / или действительны (ссылаются на живой объект) по разным причинам, поскольку это по сути, со…
14 апр '15 в 13:28
1
ответ
Отслеживание прав собственности в Rust: разница между Box<T> (куча) и T (стек)
Экспериментируя с языком программирования Rust, я обнаружил, что компилятор может очень точно отслеживать перемещение поля некоторой структуры в стеке (он точно знает, какое поле переместилось). Тем не менее, когда я положил одну часть структуры в B…
20 май '17 в 04:20
1
ответ
Быстрая проверка неприятной посторонней функции в Haskell(GHC)
Я хотел бы использовать библиотеку Quickcheck на Haskell для проверки кода на Си. Кажется, самый простой способ сделать foreign import и напишите свойство поверх результирующей функции haskell. Проблема заключается в том, что если код C вызывает seg…
08 авг '14 в 10:12
2
ответа
Каков объем возвращаемого значения в Rust?
Что происходит с данными, на которые ссылается переменная, когда они возвращаются вызывающей стороне? Когда данные уничтожены и, возможно, выпала черта Drop?
27 дек '14 в 14:41
2
ответа
Как предотвратить переполнение буфера / массива?
Недавно я писал код для собственного протокола последовательной связи. Я использовал часть получаемых данных (8/16 бит), чтобы указать, насколько велик размер кадра. Основываясь на этих данных, я ожидаю, что нет данных для подражания. Я использую Cr…
09 апр '16 в 18:43
2
ответа
Есть ли предупреждение C++ для возврата ссылки во временное хранилище?
Для этого случая есть ошибка: const int& foo() { const int x = 0; return x; } и даже const int& foo() { const std::pair<int,int> x = {0,0}; return x.first; } но не это const int& foo() { const std::array<int,1> x = {0}; retur…
24 май '18 в 18:59
0
ответов
Являются ли локальные переменные в Swift неявно инициализируемыми в nil при использовании с UnsafeMutablePointer?
var cgImage: CGImage? VTCreateCGImageFromCVPixelBuffer(pixelBuffer, options: nil, imageOut: &cgImage) return cgImage VTCreateCGImageFromCVPixelBuffer() принимает UnsafeMutalePointer. Предположим, что произошла ошибка, и она не присваивается cgIm…
16 окт '18 в 05:17
0
ответов
Безопасность памяти в быстром (inout param/ долгосрочный доступ)
Я читал главу о безопасности памяти на swift и хотел попробовать этот пример: var stepSize = 1 func increment(_ number: inout Int) { number += stepSize } increment(&stepSize) Событие, если в нем говорится об ошибке из-за конфликтующего доступа к…
26 янв '18 в 15:37
2
ответа
Что нужно для написания безопасных для памяти приложений C++?
Можно ли либо создать стандарт кодирования, либо использовать библиотеку, которая может быть доказана для устранения любых ошибок управления памятью в C++? Я думаю о чем-то вроде Java, просто невозможно, например, иметь висячие указатели в приложени…
12 янв '17 в 15:03
2
ответа
О данных из TClientDataSet
Я сделал функцию, которая копирует данные из TClientDataSet в B. В производстве код будет динамически заполнять TClientDataSet, как показано ниже: procedure LoadClientDataSet(const StringSql: String; ParamsAsArray: array of Variant; CdsToLoad: TClie…
14 мар '14 в 12:26
2
ответа
Почему в документации Rust говорится, что совместное использование ссылки на вектор создаст недопустимый вектор, даже если вектор находится в куче?
Ниже приводится выдержка из главы " Язык программирования Rust" о владении: Теперь рассмотрим следующий фрагмент кода: let v = vec![1, 2, 3]; let mut v2 = v; Первая строка выделяет память для векторного объекта v в стеке, как это делается для x выше…
03 май '17 в 06:50
2
ответа
Анти-взлом Android-проект
Мне нужно больше информации о том, как сделать так, чтобы мой проект не был взломан. 1-й: да, я знаю, что вам нужно рутованное устройство для взлома игр и приложений на вашем телефоне. 2-й: да, я знаю, что это больше относится к чтению памяти и наст…
28 май '16 в 12:56
1
ответ
Объект curretUser - это безопасно
Я сижу, программируя "банкомат / интернет-банк" как школьное задание, и меня интересует "безопасность" создания объекта, в котором вы сохраняете currentUser. "Атм" должен уметь работать на ноутбуке. С этим назначением "atm" есть связанная база данны…
14 май '15 в 15:08
2
ответа
Выход из безопасности с помощью отладочных операторов
Я знаю debug writeln("Some good debug message") в pure функции, но как насчет функций, которые я тщательно пометил как @safe или же @trusted? DMD в настоящее время не позволяет debug writelnв тех, потому что writeln и аналогичные в настоящее время @…
16 окт '13 в 20:35