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 χαμηλού επιπέδου ή για βελτιστοποίηση της απόδοσης.