title: How mmap with NULL addr works?
body: <p>It is specified that when using <code>mmap</code> with <code>NULL</code> <em>addr</em>, the kernel chooses the (page-aligned) address at which to create the mapping:</p>
  
  <blockquote>
    <p>mmap() creates a new mapping in the virtual address space of the
           calling process.  The starting address for the new mapping is
           specified in addr.  The length argument specifies the length of the
           mapping (which must be greater than 0). <strong>If addr is NULL, then the kernel chooses the (page-aligned) address
           at which to create the mapping</strong>; this is the most portable method of
           creating a new mapping.</p>
  </blockquote>
  
  <p>Supposing I have the code below :</p>
  
  <pre><code>void (*x)(void);
  void (*y)(void);
  x=mmap(NULL, 0x500, PROT..., FLAGS..., FD..., 0);
  y=mmap(NULL, 0x500, PROT..., FLAGS..., FD..., 0);
  </code></pre>
  
  <p>Does it means that <code>y</code> will follow just after <code>x</code> ?</p>
  
  <p>Thanks.</p>