Sobes.tech
Junior — Middle

Kas saaksite anda näite dünaamilise mälu eraldamise kasutamisest andmestruktuuri salvestamiseks?

sobes.tech AI

Vastus AI-lt

iOS-is kasutatakse sageli dünaamilise mälu eraldamiseks klasse, mis haldavad mälu automaatselt, näiteks NSMutableArray või Swift Array. Kuid kui räägime madalamast tasemest, saab kasutada malloc ja free funktsioone andmestruktuuri jaoks mälu eraldamiseks.

Näide Swiftis UnsafeMutablePointer kasutamisega dünaamilise struktuuride massiivi jaoks:

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

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

// Mälu vabastamine
pointer.deinitialize(count: count)
pointer.deallocate()

See lähenemine võimaldab käsitsi mälu hallata, mis on kasulik madala taseme API-dega töötamisel või jõudluse optimeerimisel.