Die implizite Deklaration der Funktion free ist in c99 ungültig

Lesezeit: 1 Minute

In xcode 5 erhalte ich diese Warnung:

“implizite Deklaration der Funktion free ist in c99 ungültig”

Wie soll ich meine C-Strukturen freigeben, wenn ich die Funktion free() nicht verwenden kann?

  • Hast du aufgenommen <stdlib.h> ?

    – Michael

    16. Oktober 2013 um 11:01 Uhr

  • Haben Sie den Speicher für die Struktur mit malloc- oder calloc-Funktionen deklariert?

    – fragmisch

    16. Oktober 2013 um 11:30 Uhr

  • @Michael: Ich habe den gleichen Fehler und versucht aufzunehmen <stdlib.h> aber der Fehler verschwindet nicht

    – Lee

    25. Februar 2017 um 9:21 Uhr

Sie sollten enthalten <stdlib.h>.

  • Das ist eine schreckliche Antwort, wenn ich das sagen darf…

    – Irgendein Programmierer-Typ

    13. April um 19:53 Uhr

Sie erhalten diese Warnung, weil Sie eine Funktion aufrufen, ohne sie vorher zu deklarieren, sodass der Compiler nichts über die Funktion weiß.

Alle Funktionen müssen vor dem Aufruf deklariert werden, es gibt keine “eingebauten” Funktionen in C.

Es ist wahr, dass free() eine im Standard definierte Funktion ist, aber immer noch nicht eingebaut ist, müssen Sie einen Prototyp dafür haben.

Um herauszufinden, welcher Header den Prototyp enthält, suchen Sie nach “man free” und suchen Sie nach a Linux Handbuchseite. Ganz oben steht:

#include <stdlib.h>

void *malloc(size_t size);
void free(void *ptr);
void *calloc(size_t nmemb, size_t size);
void *realloc(void *ptr, size_t size);

Dies sagt Ihnen, dass Sie Folgendes hinzufügen sollten, um die aufgelisteten Funktionen zu verwenden:

#include <stdlib.h>

zu deinem Quellcode.

1369700cookie-checkDie implizite Deklaration der Funktion free ist in c99 ungültig

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy