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.