ich ein Problem habe, den Speicher mit einem Element einer Instanz einer Struktur zugeordnet Befreiung wie folgt definiert:Pointer-Fehler, wenn sie frei Strukturelement versucht
typedef struct WebPage {
char *url; // url of the page
char *html; // html code of the page
size_t html_len; // length of html code
int depth; // depth of crawl
} WebPage;
ich versuche, es zu befreien, mit:
static void setDestroy(set_t *set){
pair_t *temp2;
if(set!=NULL&&set->head!=NULL){
//store the head in a temporary pair
pair_t *temp = set->head;
//cycle through LL items, freeing contents and then structure instances
while(temp!=NULL){
temp2 = temp->next;
free(temp->data->url);
free(temp->data->html);
free(temp->data);
free(temp->key);
free(temp);
temp = temp2;
}
set->head = NULL;
}
free(set);
return;
}
Allerdings bekomme ich diesen Fehler:
gcc -Wall -pedantic -std=c11 -ggdb -c -o crawler.o crawler.c
crawler.c: In function ‘setDestroy’:
crawler.c:428:22: warning: dereferencing ‘void *’ pointer
free(temp->data->url);
^
crawler.c:428:22: error: request for member ‘url’ in something not a structure or union
crawler.c:429:22: warning: dereferencing ‘void *’ pointer
free(temp->data->html);
^
crawler.c:429:22: error: request for member ‘html’ in something not a structure or union
<builtin>: recipe for target 'crawler.o' failed
Alle Ideen, was ich falsch tun könnte? Ich habe versucht, temp-> data-> url als String ohne Erfolg zu werfen.
Vielen Dank!
Was ist die Deklaration des Typs 'pair_t'? Es sieht so aus als wäre 'pair_t.data'' void * ', nicht' WebPage * '. – Barmar
Oh, du hast recht, pair_t.data ist ungültig *. Also, wie könnte ich Daten vom Typ WebPage konvertieren? – dirtyb