When I use
warning: incompatible implicit declaration of built-in function 'malloc' [enabled by default]
ubuntu 12.04 64-bit
<malloc.h> header is deprecated (and quite Linux specific, on which it defines non-standard functions like mallinfo(3)). Use
<stdlib.h> instead if you simply need malloc(3) and related standard functions (e.g.
realloc ....). Notice that
<stdlib.h> is defined by C89 (and later) standards, but not
/usr/include/malloc.h you'll find there some non-standard functions (e.g. malloc_stats(3), etc...) - in addition of
gcc don't link header files, but libraries. Read Levine's book about linkers & loaders for more.
If you don't include any headers (and dont explicitly declare
malloc yourself, which would be a bad idea),
malloc is implicitly declared as returning some
int value (which is wrong). I do invite you to pass at least the
-Wall flag to
gcc when using it.
You might also pass
gcc to understand the actual programs involved:
cc1 is the compiler proper (producing assembly code),
as the assembler,
ld the linker, and collect2 an internal utility which invokes the linker.