Sobes.tech
Junior — Middle

Може ли да дадете пример за използване на динамично разпределяне на памет за съхраняване на структура от данни?

sobes.tech AI

Отговор от AI

В iOS за динамично разпределяне на памет често се използват класове, които управляват паметта автоматично, като NSMutableArray или Swift Array. Но ако говорим за по-ниско ниво, можем да използваме функциите malloc и free за разпределяне на памет за структура от данни.

Пример на Swift с използване на UnsafeMutablePointer за динамичен масив от структури:

struct Point {
    var x: Int
    var y: Int
}

let count = 5
let pointer = UnsafeMutablePointer<Point>.allocate(capacity: count)

for i in 0..<count {
    pointer.advanced(by: i).initialize(to: Point(x: i, y: i * 2))
}

// Използване на данните
for i in 0..<count {
    let point = pointer.advanced(by: i).pointee
    print("Point \(i): (\(point.x), \(point.y))")
}

// Освобождаване на паметта
pointer.deinitialize(count: count)
pointer.deallocate()

Този подход позволява ръчно управление на паметта, което е полезно при работа с ниско ниво API или за оптимизация на производителността.