mmap Tutorial with Examples In C and C++ Programming Languages – POFTUT

mmap Tutorial with Examples In C and C++ Programming Languages

As programmers we generally use malloc() , free() and similar functions in order to allocate memory. They are provided by glibc() library. The actual work is done by mmap() and munmap()which is a Linux systemcall.

What Does mmap() Function?

mmap() function or system call will create a mapping in the virtual meory of the current process.The address space consist of multiple pages and each page can be mapped some resource. We can create this mapping for a resources we want to use.

Library

mmap() and munmap() functions are provided by sys/mman.h library. so in order to use we need to include them like below.

Syntax

As mmap() provides flexible memory mapping it has a lot of parameters to use.

  • void *addr is the address we want to start mapping
  • size_t lengthint is the size we want to map in as integer
  • PROT_READ|PROT_WRITE|PROT_EXEC options about page
  • MAP_ANON|MAP_PRIVATE options about page

Memory Mapping Types

We have two option about memory mapping for sharing.

  • MAP_SHARED will map given page and this will be also visible by other processes.
  • MAP_PRIVATE will map given page and this will not visible to other processes.

Example

Here is an example which takes a page from start of 2^20 . The default size of the page is 4096 byte so we will map a page with 4096 byte memory.

When we compile with the following command the a.out executable will be generated.

mmap() Example

mmap() Example

1 Response

  1. mark says:

    Does not compile

    /usr/include/x86_64-linux-gnu/sys/mman.h:57:14: note: expected ‘__off_t {aka long int}’ but argument is of type ‘void *’

Leave a Reply

Your email address will not be published. Required fields are marked *

Enjoy this blog? Please spread the word :)