Forum: PC-Programmierung C - Fehler bei Parameterübergabe an Funktion - evtl. Speicherproblem??


von max .. (vbc2011)


Lesenswert?

HI,
ich möchte an eine Funktion (F1) verschiedene Parameter übergeben.
Dies funktioniert eig. auch ohne einen Fehler zu produzieren - jedoch 
kommt in der Funktion nicht mehr der Inhalt an - den ich hineingeben 
habe!

typedef XMLNODE  *XMLNODEPTR;

XMLNODEPTR    xmlrootmain = NULL;
char *XMLBuffer;
char XMLReadData[1024] = {"\0"};
XMLBuffer = &XMLReadData;

// Definition von F1:
// extern void XMLWriteToBuffer( XMLNODEPTR xmlroot, char *buffer, 
unsigned long bufSize, unsigned int *status )

//Nun der Aufruf
F1( &xmlrootmain, &XMLBuffer, 1024, &XMLStatus );

Ich schreibe in den &xmlrootmain den NodeTree von einer xml-file (also 
eig. nur "zeichen"). Vor der Übergabe in F1 ist das auch alles korrekt!
In der Funktion F1 selbst kommt jedoch nur ein Teil der "zeichen" an...

Ich denke dies könnte mit der Speicherverwaltung zutun haben??

Freue mich auf hilfreiche Tipps/Beispiele zum Verständnis!

von Nico S. (Gast)


Lesenswert?

xmlrootmain und XMLBuffer sind bereits ein Pointer, also so aufrufen:


F1( xmlrootmain, XMLBuffer, 1024, &XMLStatus );

von Antwort (Gast)


Lesenswert?

max .. schrieb:
> char *XMLBuffer;
> char XMLReadData[1024] = {"\0"};
> XMLBuffer = &XMLReadData;
Hier jhast du auch einen kleinen Fehler in der dritten zweile. Es müsste 
heßen
1
XMLBuffer = XMLReadData
Wenn du nur den Namen eines Arrays übergibst ist dies die Adresse des 
Arrays. Ein & musst du nur verwenden wenn dein Aufruf so aussehen würde
1
XMLBuffer = &XMLReadData[0]

von max .. (vbc2011)


Lesenswert?

haha - vielen Dank....
"oft liegt die lösung so klar vor einem":)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.