# munmap

## PROLOG



           This manual page is part of the POSIX Programmer's Manual.  The
           Linux implementation of this interface may differ (consult the
           corresponding Linux manual page for details of Linux behavior), or
           the interface may not be implemented on Linux.
    


## NAME



           munmap — unmap pages of memory
    


## SYNOPSIS



           #include <sys/mman.h>
    
           int munmap(void *_addr_ , size_t _len_);
    


## DESCRIPTION



           The _munmap_() function shall remove any mappings for those entire
           pages containing any part of the address space of the process
           starting at _addr_ and continuing for _len_ bytes. Further references
           to these pages shall result in the generation of a SIGSEGV signal
           to the process.  If there are no mappings in the specified address
           range, then _munmap_() has no effect.
    
           The implementation may require that _addr_ be a multiple of the page
           size as returned by _sysconf_().
    
           If a mapping to be removed was private, any modifications made in
           this address range shall be discarded.
    
           Any memory locks (see mlock(3p) and mlockall(3p)) associated with
           this address range shall be removed, as if by an appropriate call
           to _munlock_().
    
           If a mapping removed from a typed memory object causes the
           corresponding address range of the memory pool to be inaccessible
           by any process in the system except through allocatable mappings
           (that is, mappings of typed memory objects opened with the
           POSIX_TYPED_MEM_MAP_ALLOCATABLE flag), then that range of the
           memory pool shall become deallocated and may become available to
           satisfy future typed memory allocation requests.
    
           A mapping removed from a typed memory object opened with the
           POSIX_TYPED_MEM_MAP_ALLOCATABLE flag shall not affect in any way
           the availability of that typed memory for allocation.
    
           The behavior of this function is unspecified if the mapping was
           not established by a call to _mmap_().
    


## RETURN VALUE



           Upon successful completion, _munmap_() shall return 0; otherwise, it
           shall return -1 and set _errno_ to indicate the error.
    


## ERRORS



           The _munmap_() function shall fail if:
    
           **EINVAL** Addresses in the range [_addr_ ,_addr_ +_len_) are outside the
                  valid range for the address space of a process.
    
           **EINVAL** The _len_ argument is 0.
    
           The _munmap_() function may fail if:
    
           **EINVAL** The _addr_ argument is not a multiple of the page size as
                  returned by _sysconf_().
    
           _The following sections are informative._
    


## EXAMPLES



           None.
    


## APPLICATION USAGE



           None.
    


## RATIONALE



           The _munmap_() function corresponds to SVR4, just as the _mmap_()
           function does.
    
           It is possible that an application has applied process memory
           locking to a region that contains shared memory. If this has
           occurred, the _munmap_() call ignores those locks and, if necessary,
           causes those locks to be removed.
    
           Most implementations require that _addr_ is a multiple of the page
           size as returned by _sysconf_().
    


## FUTURE DIRECTIONS



           None.
    


* * *