Why do I get a warning every time I use malloc?
Solution 1
You need to add:
#include <stdlib.h>
This file includes the declaration for the built-in function malloc
. If you don't do that, the compiler thinks you want to define your own function named malloc
and it warns you because:
- You don't explicitly declare it and
- There already is a built-in function by that name which has a different signature than the one that was implicitly declared (when a function is declared implicitly, its return and argument types are assumed to be
int
, which isn't compatible with the built-inmalloc
, which takes asize_t
and returns avoid*
).
Solution 2
You haven't done #include <stdlib.h>
.
Solution 3
You need to include the header file that declares the function, for example:
#include <stdlib.h>
If you don't include this header file, the function is not known to the compiler. So it sees it as undeclared.
Solution 4
Make a habit of looking your functions up in help.
Most help for C is modelled on the unix manual pages.
Using :
man malloc
gives pretty useful results.
Googling man malloc
will show you what I mean.
In unix you also get apropos for things that are related.
Related videos on Youtube
vishwas kumar
Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies. --Teach Yourself Programming In Ten Years
Updated on July 08, 2022Comments
-
vishwas kumar almost 2 years
If I use
malloc
in my code:int *x = malloc(sizeof(int));
I get this warning from
gcc
:new.c:7: warning: implicit declaration of function ‘malloc’ new.c:7: warning: incompatible implicit declaration of built-in function ‘malloc’
-
Mechanical snail over 12 yearsOnly if you already know that the line
#include <stdlib.h>
in the synopsis means you have to write that in your program. -
Jens over 11 yearsTerminology nit: There's no such thing as a built-in function in C. malloc is simply a function from the Standard C Library.
-
sepp2k over 11 years@Jens I don't see a problem with referring to standard library functions as built-ins - and neither do the gcc people apparently since the error message used the word "built-in", too (which is why I did).
-
Jens over 11 years@sepp2k Well, I do see a problem. The usage is non-standard. Compilers can have built-in functions, and gcc may have malloc built-in. But as I wrote, in C, there are no built-in functions.
-
MikeKulls almost 11 yearsIf someone has read the other answers here then they will now know that.