Sobes.tech
Junior — Middle

Kuidas te seletaksite virna kontseptsiooni programmeerimises?

sobes.tech AI

Vastus AI-lt

Programmeerimises on virn (heap) mälu ala, mida kasutatakse dünaamiliseks mälu eraldamiseks programmi täitmise ajal. Erinevalt virnast (stack), kus mälu eraldatakse ja vabastatakse automaatselt LIFO põhimõttel, kontrollib virna programmija ise mälu eraldamist ja vabastamist (näiteks C-s malloc/free või automaatse mälu haldamise keeltes prügikoristaja kaudu).

Virna võimaldab luua objekte ja andmestruktuure, mille suurus on teada ainult täitmise ajal, ning hoida neid seni, kuni need ei ole enam vajalikud. Näiteks iOS-is eraldatakse Objective-C või Swift objektid tavaliselt virna, ning mälu haldamine toimub ARC (Automaatne viitearvutus) kaudu.

Näide Swiftis:

class Person {
    var name: String
    init(name: String) {
        self.name = name
    }
}

let person = Person(name: "Иван") // objekt luuakse virnas

Siin luuakse Person objekt virnas, ning muutuja person sisaldab viidet sellele objektile.