Sobes.tech
Junior — Middle

Czy możesz podać przykład użycia dynamicznego przydziału pamięci do przechowywania struktury danych?

sobes.tech AI

Odpowiedź od AI

W iOS do dynamicznego przydzielania pamięci często używa się klas, które zarządzają pamięcią automatycznie, takich jak NSMutableArray lub Swift Array. Jednak jeśli mówimy o niższym poziomie, można używać funkcji malloc i free do przydzielania pamięci dla struktury danych.

Przykład w Swift z użyciem UnsafeMutablePointer dla dynamicznej tablicy struktur:

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))
}

// Użycie danych
for i in 0..<count {
    let point = pointer.advanced(by: i).pointee
    print("Point \(i): (\(point.x), \(point.y))")
}

// Zwolnienie pamięci
pointer.deinitialize(count: count)
pointer.deallocate()

Taki sposób pozwala na ręczne zarządzanie pamięcią, co jest przydatne przy pracy z API niskiego poziomu lub w celu optymalizacji wydajności.