Sobes.tech
Junior — Middle

Ai putea să dai un exemplu de utilizare a alocării dinamice de memorie pentru stocarea unei structuri de date?

sobes.tech AI

Răspuns de la AI

În iOS, pentru alocarea dinamică a memoriei, se folosesc adesea clase care gestionează automat memoria, cum ar fi NSMutableArray sau Swift Array. Dar dacă vorbim despre un nivel mai jos, se pot folosi funcțiile malloc și free pentru a aloca memorie pentru o structură de date.

Exemplu în Swift folosind UnsafeMutablePointer pentru un array dinamic de structuri:

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

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

// Eliberarea memoriei
pointer.deinitialize(count: count)
pointer.deallocate()

Această abordare permite gestionarea manuală a memoriei, ceea ce este util atunci când se lucrează cu API-uri de nivel scăzut sau pentru optimizarea performanței.