Functions such as
malloc() and other
dynamic memory allocation functions explicitly allocate memory when
used. However, some library functions and mechanisms implicitly allocate memory
from the heap. If heap usage requirements are significant to your
code development (for example, you might be developing code for
an embedded system with a tiny memory footprint), you must be aware
of both implicit and explicit heap requirements.
In C standardlib, implicit heap usage occurs as a result of:
calling the library function
fopen()and the first time that an I/O operation is applied to the resulting stream
passing command-line arguments into the
The size of heap memory allocated for
80 bytes for the
FILE structure. When the first I/O
operation occurs, and not until the operation occurs, an additional
default of 512 bytes of heap memory is allocated for a buffer associated
with the operation. You can reconfigure the size of this buffer
fclose() is called, the default
80 bytes of memory is kept on a freelist for possible re-use. The
512-byte buffer is freed on
main() to take arguments requires
256 bytes of implicitly allocated memory from the heap. This memory
is never freed because it is required for the duration of
main() must not be declared to
take arguments, so this heap usage requirement only applies to standardlib.
In the standardlib context, it only applies if you have a heap.
The memory sizes quoted might change in future releases.