ჩვეულებრივ, malloc გამოყოფს მეხსიერებას გროვა-დან და არეგულირებს გროვის ზომას, როგორც საჭიროა, sbrk(2) გამოყენებით. MMAP_THRESHOLD ბაიტზე მეტი მეხსიერების ბლოკების გამოყოფისას, glibc malloc იმპლემენტაცია გამოყოფს მეხსიერებას, როგორც კერძო ანონიმურ რუკს mmap(2) გამოყენებით.
სად არის გამოყოფილი malloc მეხსიერება?
C-ში ბიბლიოთეკის ფუნქცია malloc გამოიყენება მეხსიერების ბლოკის გამოსაყოფად გროვა-ზე პროგრამა წვდება მეხსიერების ამ ბლოკს მაჩვენებლის საშუალებით, რომელსაც malloc აბრუნებს. როდესაც მეხსიერება აღარ არის საჭირო, მაჩვენებელი გადაეცემა თავისუფალს, რომელიც ანაწილებს მეხსიერებას ისე, რომ მისი გამოყენება სხვა მიზნებისთვის იყოს შესაძლებელი.
მეხსიერების რომელ ნაწილში ანაწილებს მეხსიერებას malloc და calloc?
სახელი malloc და calloc არის ბიბლიოთეკის ფუნქციები, რომლებიც ანაწილებენ მეხსიერებას დინამიურად. ეს ნიშნავს, რომ მეხსიერება გამოყოფილია გაშვების დროს (პროგრამის შესრულება) გროვის სეგმენტიდან.
სად არის გამოყოფილი მეხსიერება?
გროვა. Heap არის კომპიუტერის მეხსიერების ის ნაწილი, რომელიც გამოყოფილია გაშვებულ აპლიკაციაზე, სადაც მეხსიერების გამოყოფა შესაძლებელია ცვლადებისთვის, კლასის შემთხვევებისთვის და ა.შ. პროგრამის გროვიდან OS გამოყოფს მეხსიერებას დინამიური გამოყენებისთვის.
სად ინახება სტატიკურად გამოყოფილი მეხსიერება?
როდესაც პროგრამა (შესრულებადი ან ბიბლიოთეკა) იტვირთება მეხსიერებაში, სტატიკური ცვლადები ინახება პროგრამის მისამართის სივრცის მონაცემთა სეგმენტში (თუ ინიციალიზებულია), ან BSS სეგმენტში. (თუ არაინიციალიზებულია) და ინახება ობიექტის ფაილების შესაბამის განყოფილებებში ჩატვირთვამდე.