malloc und structuren
-
hi,
folgende frage:
wie kann man sowas hier am geschicktesten loesen... struct ip {char **ip}; so sieht die structur aus, deklariert hab ich se dann so struct ip *foo;
is klar das ich nu speicher allocieren muss um da daten speichern zu koennen,
das mach ich dann mit:foo->ip = (char **) malloc(sizeof(char *)*20); for (i=0; i < 20; i++) { foo->ip[i] = (char *)malloc(sizeof(char)*30);}
naja das ganze gibt logischer weise nen seg fault
ich haette ja zuerst speicher fuer foo allocieren muessen
nu die frage ... wie mach ich das am geschicktesten ohne vorher auszurechnen wieviel speicher das sein wird
-
TDO schrieb:
ich haette ja zuerst speicher fuer foo allocieren muessen
nu die frage ... wie mach ich das am geschicktesten ohne vorher auszurechnen wieviel speicher das sein wirddir fehlt noch ein 'foo = malloc(sizeof(struct ip*));'
-
hi ... ist es nicht so das *foo die groesse von
malloc(sizeof(char *)*20) + malloc (sizeof(char)*30) haben muss?
reicht da wirklich ein einfaches malloc (sizeof(struct ip *)); ?
danke TDO
-
nein, du musst auch für zeiger innerhalb von struct´s speicher reservieren,
denn ein malloc auf deine struktur reserviert dir nur 4 byte für deinen zeiger.#include <stdio.h> #include <stdlib.h> typedef struct { int zahl; char *zeichen; }foo; int main(int argc, char *argv[]) { foo *test; test=malloc(sizeof(foo)); test->zeichen=malloc(sizeof(char)); //fehlt diese zeile, gibts nen sp. zugriffsfehler *test->zeichen=0x61; return 0; }