Junior — Middle
Poderia dar um exemplo de uso de alocação dinâmica de memória para armazenar uma estrutura de dados?
sobes.tech IA
Resposta da IA
No iOS, para a alocação dinâmica de memória, muitas vezes usam-se classes que gerenciam a memória automaticamente, como NSMutableArray ou Swift Array. Mas, se falarmos de um nível mais baixo, pode-se usar as funções malloc e free para alocar memória para uma estrutura de dados.
Exemplo em Swift usando UnsafeMutablePointer para um array dinâmico de estruturas:
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))
}
// Uso dos dados
for i in 0..<count {
let point = pointer.advanced(by: i).pointee
print("Point \(i): (\(point.x), \(point.y))")
}
// Liberação de memória
pointer.deinitialize(count: count)
pointer.deallocate()
Esta abordagem permite gerir manualmente a memória, o que é útil ao trabalhar com APIs de baixo nível ou para otimizar o desempenho.