title: Why are malloc() and printf() said as non-reentrant?
body: <p>In UNIX systems we know <code>malloc()</code> is a non-reentrant function (system call).  Why is that? </p>
  
  <p>Similarly, <code>printf()</code> also is said to be non-reentrant; why?</p>
  
  <p>I know the definition of re-entrancy, but I wanted to know why it applies to these functions.
    What prevents them being guaranteed reentrant?</p>