title: why do the argument of function brk() is void* and not int type?
body: <p>I was looking at the documentation of the function int brk() in the Linux guide:</p>
  
  <pre><code>SYNOPSIS
     #include &lt;unistd.h&gt;
  
     int brk(void *addr);
  
     void *sbrk(intptr_t increment);
  
  
  
  Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
  
     brk(), sbrk():
         Since glibc 2.19:
             _DEFAULT_SOURCE ||
                 (_XOPEN_SOURCE &gt;= 500) &amp;&amp;
                 ! (_POSIX_C_SOURCE &gt;= 200112L)
         From glibc 2.12 to 2.19:
             _BSD_SOURCE || _SVID_SOURCE ||
                 (_XOPEN_SOURCE &gt;= 500) &amp;&amp;
                 ! (_POSIX_C_SOURCE &gt;= 200112L)
         Before glibc 2.12:
             _BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE &gt;= 500
  
  DESCRIPTION      
         brk() and sbrk() change the location of the program break, which
         defines the end of the process's data segment (i.e., the program
         break is the first location after the end of the uninitialized data
         segment).  Increasing the program break has the effect of allocating
         memory to the process; decreasing the break deallocates memory.
  
     brk() sets the end of the data segment to the value specified by
     addr, when that value is reasonable, the system has enough memory,
     and the process does not exceed its maximum data size (see
     setrlimit(2)).
  
  RETURN VALUE    
         On success, brk() returns zero.  On error, -1 is returned, and errno
         is set to ENOMEM.
  </code></pre>
  
  <p>and there's something I don't understand: if brk() only sets the end of the data segment to the value specified by addr, then why does it's argument is void* and not int type?</p>
  
  <p>Thank you for your help!</p>