Rozumiem, że jeśli potrzebujesz pamięci przydzielanej dynamicznie, możesz użyć funkcji malloc(). Na przykład twój program czyta plik o zmiennej długości w char []. Nie wiesz z góry, jak duża jest twoja tablica, więc przydzielasz pamięć w środowisku wykonawczym.Kiedy należy użyć mmap
Próbuję zrozumieć, kiedy można użyć mmap(). Przeczytałem stronę man i szczerze mówiąc, nie rozumiem, co to jest przypadek użycia.
Czy ktoś może wyjaśnić mi przypadek użycia w prostych słowach? Z góry dziękuję.
Czy masz link z większą ilością szczegółów dotyczących dostępu do dużego pliku z niewielką ilością pamięci? Ten punkt wprowadza mnie w błąd co do sposobu działania mmap() ... – Ioan
@Ioan Nie ma żadnych szczegółów dla dużych plików: po prostu je "mmap". Plik musi oczywiście pasować do pamięci _wirtualnej_, ale cała pamięć wirtualna nie musi być obecna w pamięci RAM w danym momencie. 'mmap' używa tego samego mechanizmu co przestrzeń wymiany. Ale wyjaśnienie, jak działa wirusowa pamięć, byłoby nieco za długie na komentarz :) –
Twój komentarz ma więcej sensu. Źle zrozumiałem, co masz na myśli, przetwarzając pliki większe niż dostępna pamięć. – Ioan