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.