В предыдущих версиях Swift я смог использовать функцию posix_memalign
для выделения выровненной памяти для оптимизации определенных операций. Начиная с обновления до бета-версии Swift 3 (в комплекте с Xcode 8 beta 2), она терпит неудачу, и я не уверен, почему. Это может быть просто проблема с бета-версией, или, может быть, мне просто нужно изменить способ взаимодействия с этой функцией.Выделенная память в Swift 3
Ниже приведен пример кода, который я использовал для расследования проблемы. (Она пытается выделить буфер чисел с плавающей точкой, выровненная 16K.)
var pointer: UnsafeMutablePointer<Void>? = nil
let alignment: Int = 0x4
let length: Int = bufferSize
let ret = posix_memalign(&pointer, alignment, length * sizeof(Float))
if ret != noErr {
let err = String(validatingUTF8: strerror(ret)) ?? "unknown error"
fatalError("Unable to allocate aligned memory: \(err).")
}
posix_memalign
терпит неудачу с «недопустимым аргументом.» сообщение.
Любые идеи?