Những nhược điểm của việc cấp phát bộ nhớ bằng cách sử dụng mmap
(với MAP_PRIVATE và MAP_ANONYMOUS) là gì khi sử dụng malloc
? Đối với dữ liệu trong phạm vi chức năng, tôi sẽ sử dụng bộ nhớ ngăn xếp anyway và do đó không phải malloc.
Nếu tôi cấp phát bộ nhớ bằng mmap thay vì malloc thì sao?
Một bất lợi mà bạn quan tâm là dành cho cấu trúc dữ liệu động như cây và danh sách liên kết, nơi bạn thường xuyên phân bổ và xử lý khối dữ liệu nhỏ . Sử dụng mmap
sẽ tốn kém vì hai lý do, một cho phân bổ ở mức chi tiết 4096 byte và một cho việc yêu cầu thực hiện cuộc gọi hệ thống.
Nhưng trong các trường hợp khác, bạn có nghĩ rằng malloc
tốt hơn mmap
không? Thứ hai, tôi có đánh giá quá cao bất lợi của mmap
đối với cấu trúc dữ liệu động không?
Một ưu điểm của mmap
qua malloc
tôi có thể nghĩ đến là nhớ được ngay lập tức quay trở lại hệ điều hành, khi bạn làm munmap
, trong khi với malloc/free
, tôi đoán bộ nhớ uptil điểm break phân đoạn dữ liệu là không bao giờ trở lại, nhưng vẫn giữ cho reusage .
malloc sẽ gọi mmap cho bạn, nếu cần thiết ... Chỉ cần dính vào malloc. – Macmade
Một bất lợi là nếu bạn xả mã của bạn với các cuộc gọi đến 'mmap', nó trở nên ít cầm tay. –
Và tại sao làm cho cuộc sống trở nên phức tạp hơn cần thiết? –