Sobes.tech
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.