Jakie są wady przydzielania pamięci przy użyciu mmap
(z MAP_PRIVATE i MAP_ANONYMOUS) niż przy użyciu malloc
? W przypadku danych w zakresie funkcji, i tak korzystałbym z pamięci stosu, a zatem nie, w przypadku niektórych dynamicznych struktur danych, takich jak drzewa i powiązane listy, gdzie często trzeba przydzielić i zwolnić małe porcje danych. . Korzystanie z tego systemu byłoby kosztowne z dwóch powodów: jednego do przydzielania z dokładnością do 4096 bajtów, a drugiego do żądania wywołania systemowego.Co się stanie, jeśli przydzielę pamięć za pomocą mmap zamiast malloc?
Ale czy w innych scenariuszach uważasz, że malloc
jest lepszy niż mmap
? Po drugie, czy przeszmuglowałem wady w odniesieniu do dynamicznych struktur danych: mmap
?
Zaletą mmap
nad malloc
mogę myśleć, że pamięć jest natychmiast powrócił do systemu operacyjnego, gdy robisz munmap
, natomiast z malloc/free
Chyba pamięć uptil segmentu danych punkt przerwania nigdy nie jest zwracany, ale przechowywane reusage .
malloc w razie potrzeby nazwie mmap, po prostu trzymaj się malloc. – Macmade
Inną wadą jest to, że jeśli zaśmiecasz swój kod wywołując 'mmap', staje się on mniej przenośny. –
I dlaczego życie staje się bardziej skomplikowane, niż powinno być? –