Описание тега unsafe-pointers

Некоторые "безопасные" языки, такие как Swift и Go, предлагают "небезопасные" указатели для использования с API, написанными на таких языках, как C и Objective-C. Вопросы, использующие этот тег, также должны иметь соответствующий языковой тег, например [swift] или [go].
3 ответа

Более быстрый способ преобразования строки в UnsafePointer<xmlChar> в Swift 3 (libxml2)

Я работаю над оболочкой Swift 3 для C-библиотеки libxml2. Есть два удобных метода для конвертации String в UnsafePointer&lt;xmlChar&gt; и наоборот. В libxml2 xmlChar объявлен как unsigned char, UnsafePointer&lt;xmlChar&gt; в String несложно func str…
30 авг '17 в 16:29
4 ответа

Каковы эти так называемые "бедствия", которые могут быть вызваны неправильным использованием указателей?

Я все больше и больше использую указатели в своих программах, и, читая об указателях, каждое найденное мной руководство или учебник говорили, что неправильное использование указателей может привести к "катастрофическим" результатам. Теперь у меня бы…
0 ответов

Добавить координату к MapBox MGLPolyline

Я пытаюсь добавить координату к линии, которой я помечаю карту MapBox. MGLPpoyline имеет следующую функцию для добавления координат: appendCoordinates(_ coords: UnsafePointer&lt;CLLocationCoordinate2D&gt;, count: UInt) Я не могу на всю жизнь понять,…
24 авг '18 в 20:34
0 ответов

Закрепление экземпляра класса с помощью GCHandle.Alloc в C#

Я работаю с неуправляемой библиотекой C, которая имеет функцию обратного вызова, которая вызывается из внутреннего потока в библиотеке C. Обратный вызов имеет параметр void * 'context'. Я хочу установить в этом контексте адрес экземпляра класса C#, …
0 ответов

error -'init недоступен: используйте 'withMemoryRebound(to:acity:_)', чтобы временно просмотреть память как другой тип, совместимый с макетом

Я получил эту ошибку при быстром преобразовании init недоступен: используйте withMemoryRebound(to:acity:_), чтобы временно просмотреть память как другой тип, совместимый с макетом мой код func{ var inbuf : [UInt8] = Array(repeating: 0, count: bufSiz…
14 дек '17 в 05:31
1 ответ

Как мне обработать CFSocketCallBackType.dataCallback в Swift?

Вся документация и примеры говорят, что если сокет CFSocketCallBack выноска дается .dataCallback как его второй параметр (callbackType), это означает, что четвертый (data) можно привести к CFData объект, содержащий все данные, предварительно прочит…
12 дек '17 в 19:35
1 ответ

init недоступен: используйте withMemoryRebound(to:acity:_), чтобы временно просмотреть память как другой тип, совместимый с макетом

Так как я преобразовал свой код в Swift 3, возникает ошибка. 'init is unavailable: use 'withMemoryRebound(to:capacity:_)' to temporarily view memory as another layout-compatible type. Вот мой код: func parseHRMData(data : NSData!) { var flags : UInt…
29 мар '17 в 19:26
1 ответ

Небезопасный указатель в Swift 3

Я знаю, что этот вопрос задавался несколько раз, но я действительно не понимаю его. Я хочу извлечь значение из устройства Bluetooth (Miband). В Swift 2 это работало так: func peripheral(_ peripheral: CBPeripheral, didUpdateValueFor characteristic: C…
18 окт '16 в 15:09
1 ответ

Доступ к указателю / ссылке this с помощью индексатора в C#

Я экспериментирую с структурой данных для критической части производительности / памяти в нашей кодовой базе. Я хотел бы иметь быстрый доступ к байтам, определенным в структуре. Однако я не уверен, как получить доступ к структуре, на которой я работ…
07 ноя '17 в 10:24
1 ответ

Как создать CIVector из массива CGFloat?

Я пытаюсь создать тип фильтра CICrossPolynomial в Swift. Я не уверен, как создать синтаксис, чтобы сделать это, однако. Документация указывает CIVector, который имеет массив с плавающей точкой? A CIVector object whose display name is RedCoefficients…
23 дек '14 в 21:58
3 ответа

Как читать байты структуры в Swift

Я работаю с различными структурами в Swift, которые мне нужны, чтобы иметь возможность взглянуть на память напрямую. Как я могу посмотреть на структурный байт за байтом? Например: struct AwesomeStructure { var index: Int32 var id: UInt16 var stuff: …
24 сен '18 в 21:58
1 ответ

Преобразование типа из байтового фрагмента в структуру с небезопасным

Я пытаюсь понять, почему мой код в Go не работает так, как я думал. Когда я выполняю этот тест, он не проходит: func TestConversion(t *testing.T) { type myType struct { a uint8 value uint64 } myVar1 := myType{a: 1, value: 12345} var copyFrom []byte …
06 янв '19 в 00:02
1 ответ

win.RegisterRawInputDevices Всегда возвращает false

Я использую пакет https://github.com/lxn/win для доступа к низкоуровневым вызовам Windows в Go. Я зову win.RegisterRawInputDevices зарегистрировать устройства для необработанных входных данных, но всегда возвращает false. Я сделал это в C# без пробл…
31 дек '18 в 16:15
1 ответ

Ошибка Swift: '&' используется с аргументом non-inout типа 'UnsafeMutablePointer'

Я пытаюсь преобразовать следующий код Objective C ( источник) из этого -(CGRect) dimensionsForAttributedString: (NSAttributedString *) asp { CGFloat ascent = 0, descent = 0, width = 0; CTLineRef line = CTLineCreateWithAttributedString( (CFAttributed…
12 дек '15 в 09:53
3 ответа

Преобразование UnsafePointer с длиной в тип Swift Array

Я ищу самые простые способы достижения разумной совместимости C в Swift, и мой текущий блок конвертирует UnsafePointer&lt;Int8&gt; (который был const char *), в [Int8] массив. В настоящее время у меня есть наивный алгоритм, который может принять Uns…
16 сен '15 в 11:12
2 ответа

Инициализатор UnsafePointer<UInt8> в Swift 3

У меня есть класс проверки квитанции, который устарел после выпуска Swift 3. Я исправил некоторые проблемы, но у меня все еще много... Вот исходный код GitHub, который я использовал: https://gist.github.com/baileysh9/4386ea92b047d97c7285 и https://g…
28 сен '16 в 12:12
1 ответ

Чтение значений из двоичного файла, типы которого известны во время выполнения

Я пытаюсь прочитать серию значений из двоичного файла, но я не буду знать, какие типы значений, до времени выполнения. Упрощенный пример У меня есть двоичный файл длиной 10 байт. Байты представляют, по порядку, int, floatи short, Я не знаю это во вр…
06 ноя '14 в 05:00
2 ответа

EXC_ARM_DA_ALIGN при чтении из NSData в Swift

У меня есть следующий класс: class RawDataArray { var data: NSData! init(filePath: String) { data = NSData(contentsOfFile: filePath) } func read&lt;T&gt;(offset: Int) -&gt; T { return UnsafePointer&lt;T&gt;(data.bytes + offset).memory } } который я …
13 фев '15 в 19:37
4 ответа

c указатель декремент безопасно / небезопасно?

Анализируя некоторый код: static volatile UCHAR *pucSndBufferCur; eMBErrorCode eMBRTUSend( UCHAR ucSlaveAddress, const UCHAR * pucFrame, USHORT usLength ) { if( eRcvState == STATE_RX_IDLE ) { /* First byte before the Modbus-PDU is the slave address.…
19 фев '18 в 11:04
0 ответов

Сегфо в единстве от маршала.AllocHGlobal

В Unity у меня была система потока битов, для работы которой требовалось постоянное закрепление массивов. Я оптимизирую это, выделяя блок неуправляемой памяти и поддерживая указатели на нее, пока система жива. Примечание на случай, если это предложе…