Problem mit dynamischen Arrays
-
Hallo,
ich bin auf folgendes Problem gestoßen:
ich habe ein array, welches pointer auf dynamische char arrays beinhalten soll.
Jetzt meine Frage wie kann ich bei memset das dynamische array angeben und die zweite Frage ist, wie ich die groeße des dyn. arrays feststellen kann...u_char *array[256] array[0] = (u_char *)malloc(3*sizeof(u_char)); memset(*array[0], 0, sizeof(*array[0]) //Bei mir kommen hier immer Fehler... printf("Size: %d Inhalt: %c\n", sizeof(*array[0]), array[0][0]);
-
die größe eines mit malloc() allozierten speicherbereichs kann man nicht abfragen. du musst ihn beim allozieren igrendwie mitspeichern.
zB
struct { u_char *a; size_t size; } array[256]; array.a[0] = (u_char *)malloc(3*sizeof(u_char)); array.size[0] = 3*sizeof(u_char);
sizeof() erlaubt als paramerer nur typenausdrücke. deshalb geht sizeof(u_char), nicht aber *sizeof(array[0]).
-
Konfusius schrieb:
deshalb geht sizeof(u_char), nicht aber *sizeof(array[0]).
klar geht sowas. das ist sogar besser, falls man vielleicht vorhat, den typ des arrays zu ändern.
-
genau!
-
array[0] = (u_char *)malloc(3*sizeof(u_char));
An alle "Hier wurde gecastet". Wo bleiben die eskalierenden Posts?????
-
Probiers mal so:
memset(array[0], 0, 3 * sizeof(*array[0]));
-
BorisDieKlinge schrieb:
An alle "Hier wurde gecastet". Wo bleiben die eskalierenden Posts?????
ich wäre ja dafür, dass die forensoftware solche casts automatisch beseitigt. das sollte mit php-stringfunktionen (regex etc.) ja nicht so schwer sein.
-
oder einen compiler, welcher automatisch den geposteten code übersetzt und automatisch fehler und etvl. lösung infos postest;)
-
BorisDieKlinge schrieb:
oder einen compiler, welcher automatisch den geposteten code übersetzt und automatisch fehler und etvl. lösung infos postest;)
...oder ein online-tool zur statischen code-analyse wie lint oder splint. das würde dann auch gecastete mallocs anmeckern und vieles mehr. ich sehe schon, der foren-betreiber hat noch viel zu tun.
-
~fricky schrieb:
BorisDieKlinge schrieb:
oder einen compiler, welcher automatisch den geposteten code übersetzt und automatisch fehler und etvl. lösung infos postest;)
...oder ein online-tool zur statischen code-analyse wie lint oder splint. das würde dann auch gecastete mallocs anmeckern und vieles mehr. ich sehe schon, der foren-betreiber hat noch viel zu tun.
In Japan ist ein Eskalator eine Rolltreppe. In Deutschland bist Du es.