änderung einer zeigeradresse



  • Hi,

    vermutlich hab ich mal wieder ne lange leitung... aber wenn nicht, dann wäre ich für jede Hilfe dankbar!

    sachlage: ein struct mit zeigern als elementen (nicht änderbar!) ich möchte in einer schleife diesen elementen char-vaktoren zuweisen.

    problem: wenn ich aber ein char* zuweise werden deren adressen identisch, mit der folge, dass beim nächsten schleifen durchlauf, bei der ¨nderung meines vektors auch der inhalt in allen bisher zugewiesenen struct mitgeändert wird.

    code ausschnitt:
    sprintf(xmlTmp,"%c",pStruc->tipo);
    setAttribute(ctx,dNode,"tipo",xmlTmp);
    setNamedItem(ctx, mNodes, dNode, NULL);

    dNode ist das struct (selbst nur eine adresse), xmlTmp der vektor... mit
    setAttribute werden in dem struct 2 Adressen erzeugt, eine zeigt auf "tipo" (bei jedem durchlauf neue adresse-> kein prblem); aber die adresse von xmlTmp wird dann natürlich zum problem beim nächsten durchlauf.

    kommentare? hilfen?



  • speicher reservieren und dann mittels strcpy() die inhalte der char* kopieren.



  • öh also... nun das geht nicht...
    ich kann nicht direkt auf das element im struct zugreifen... nur über die funktion ist das möglich...



  • etwas detaillierter:
    ich kenne die genaue struktur nicht, ich schätze...
    habe nur ein paar libs mehr nicht und muss damit arbeiten.
    es¨könnte sich auf um verkettete listen handeln...
    genauer weiss ich des aber auch nicht.

    dachte an eine funktion die mir einen vektor zurückgibt... der
    müsste dann aber static sein und ich hab wieder dasselbe problem.

    malloc wäre möglich, ist allerdings etwas zu langsam für die anwendung
    (realtime. aufruf der funktionen ein paar hundert mal in der minute)
    der geschriebene code ist noch zum testen von funktionen (nicht optimiert)



  • Original erstellt von Acid-Sky:
    ich kenne die genaue struktur nicht, ich schätze...

    Dann musst du ausprobieren. Wir kennen die struct auch nicht...


Anmelden zum Antworten