Hallo,
Meine C-Tage sind lange her, aber...
übrigens - rauszufinden, dass speicher in 16byte schritten (auf den getesteten systemen) reserviert wird, war etwas nervig :/
Der Speicher, den Du bei malloc haben willst, wird eigentlich immer in Bytes angegeben.
Wieviel Bytes du aber für was brauchst, ist i.d.Regel Architektur abhängig.
Der Speicherbedarf für einen Zeiger z.b. kann 2 Byte (16-Bit-Architektur), 4 Byte (32-Bit-Architektur) oder auch mehr haben.
Mit der Funktion "sizeof" kannst Du ermitteln, wie viele Bytes Dein Datentyp braucht:
int *integerArray = (int *) malloc(sizeof(int)*10);
liefert Dir ein Integer-Array für 10 Integer-Werte.
int **integerPtrArray = (int *) malloc sizeof (int *)*10);
liefert Dir ein Array von 10 Integer Arrays :)
void initArray(char**r, int size){
*r=(char*)malloc(size+1);
}das problem:
ich fand kein weg auf den array als solchen innerhalb dieser initArray zuzugreifen - was reinzuschrieben war unmöglich.
Wie hast Du denn versucht reinzuschreiben? Nehmen wir an, Dein Array ist groß genug (das müsstest Du natürlich sicherstellen, s.o.), so müsste das so gehen:
void initArray(char**r, int size){
*r=(char*)malloc(size+1);
*r[0] = 'a';
*r[1] = 'b';
*r[2] = '\0'
}
oder natürlich:
**r = 'a';
*r++;
**r = 'b';
usw
(da mag ich mich jetzt aber auch irren im Syntax)
So long,
Jörg