Odpowiedzi:
Musisz dodać:
#include <stdlib.h>
Ten plik zawiera deklarację funkcji wbudowanej malloc
. Jeśli tego nie zrobisz, kompilator pomyśli, że chcesz zdefiniować własną funkcję o nazwie malloc
i ostrzega Cię, ponieważ:
int
, co nie jest zgodne z wbudowaną in malloc
, który przyjmuje a size_t
i zwraca a void*
).Wyrób sobie nawyk sprawdzania funkcji w pomocy.
Większość pomocy dla C jest wzorowana na stronach podręcznika systemowego unix.
Za pomocą :
man malloc
daje całkiem przydatne wyniki.
Googling man malloc
pokaże ci, co mam na myśli.
W unixie otrzymujesz również odpowiednie dla rzeczy, które są ze sobą powiązane.
#include <stdlib.h>
w streszczeniu oznacza, że musisz to napisać w swoim programie.
Oprócz innych bardzo dobrych odpowiedzi, chciałbym poszukać czegoś, co nie zostało jeszcze omówione w pozostałych odpowiedziach.
Kiedy jesteś w Linuksie, aby użyć malloc()
w swoim kodzie,
Właściwie nie musisz #include <stdlib.h>
.
(Chociaż użycie stdlib.h
jest bardzo powszechne i prawdopodobnie każdy program inny niż zabawka powinien zawierać go w obu przypadkach, ponieważ zapewnia szeroką gamę przydatnych funkcji i makr w standardowej bibliotece C)
Możesz też #include <malloc.h>
zamiast tego.
Pamiętaj jednak, że użycie rozszerzenia malloc.h
jest przestarzałe i sprawia, że Twój kod nie jest przenośny. Jeśli chcesz używać malloc()
, powinieneś zawsze i zawsze (z wyjątkiem wyraźnych powodów, aby zrobić inaczej) #include <stdlib.h>
.
Powody tego najlepiej wyjaśniają odpowiedzi na to pytanie: