Inkompatible implizite Deklaration der eingebauten Funktion 'malloc'


155

Ich erhalte diesen Fehler:

Warnung: Inkompatible implizite Deklaration der eingebauten Funktion 'malloc'

Ich versuche das zu tun:

fileinfo_list* tempList = malloc(sizeof(fileinfo_list));

Nur als Referenz wird folgende Struktur verwendet:

typedef struct {
    fileinfo** filedata;
    size_t nFiles;
    size_t size;
    size_t fileblock;
} fileinfo_list;

Ich sehe nichts falsch an dem, was ich getan habe. Ich erstelle gerade eine tempListmit der Größe von 1 x fileinfo_list.


Antworten:


340

Sie haben wahrscheinlich vergessen, aufzunehmen <stdlib.h>.


1
ahh danke :) bekomme immer noch den Dreh raus von C, das erste C-Programm kommt von Java :)
SGE

nach <stdlib.h>dem Einfügen der Warnung wurde durch einen Fehler ersetzterror: conflicting types for 'malloc'
Christos Karapapas

46

Du musst #include <stdlib.h>. Andernfalls wird definiert, int malloc()welche mit dem integrierten Typ nicht kompatibel ist void *malloc(size_t).


Wenn es definiert ist als int malloc(), repliziert es void *malloc(size_t)?
user1343318

@ user1343318 Nicht unbedingt, was genau der Grund für die Warnung ist. Beispiel: Eine x64-Plattform mit 64-Bit-Datenzeigern und 32-Bit- intWerten kotzt Ziegenkot, während ein x86-32 -Bit -Datenzeiger / 32-Bit -Zeiger intscheinbar korrekt funktioniert. Beides ist nicht korrekt, da der Compiler in keinem Fall weiß, was malloctatsächlich zurückgegeben wird, und intals Antwort davon ausgeht .
WhozCraig


4

Die Datei stdlib.h enthält die Header-Informationen oder den Prototyp der Funktionen malloc, calloc, realloc und free.

Um diese Warnung in ANSI C zu vermeiden, sollten Sie die stdlib-Headerdatei einschließen.


-4

Die einzige Lösung für solche Warnungen besteht darin, stdlib.h in das Programm aufzunehmen.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.