Pointer auf gültigen Speicher wird ungültig

jccTeq

Erfahrenes Mitglied
Hi Leute,

kann mir mal einer sagen, woran es liegen kann, wenn folgendes Konstrukt:

Code:
#include <stdio.h>
#include <stdlib.h>

typedef struct _sStruktur
{
  int value;
} sStruktur;

void umbiegen(struct sStruktur **ppPointer);

int main()
{
  struct sStruktur* pPointer;

  umbiegen(&pPointer);

  printf("Umgebogen: %i\n", pPointer->value);
}

void umbiegen(struct sStruktur **ppPointer)
{
  struct sStruktur* pNeu = (struct sStruktur*)malloc( sizeof(struct sStruktur));
  
  pNeu->value = 10;
  *ppPointer = pNeu;
);

... mit Visual C++ 6.0 nicht funktioniert? Übersetzen und linken lässt es sich, starten auch. Das Problem ist, daß ich ein größeres Projekt habe, in dem ein solches Konstrukt vorkommt, bei dem aber der Wert pPointer->value nach dem Aufruf der Funktion umbiegen() nicht mehr gefüllt ist (dort steht 0xCCCCCCCC drin). Vor dem return der Funktion steht dort aber wirklich wie gewünscht der Wert 10 drin. Und pPointer wird auch auf den korrekten Speicherbereich von pNeu umgebogen. In der main() stimmt der Zeiger selbst auch noch, aber die Werte darin nicht mehr. Woran kann das liegen?

Merkwürdig ist noch, daß es halt in diesem kleinen Testprogramm funktioniert, jedoch nicht in meinem großen Projekt, obwohl's exakt das gleiche Konstrukt ist.
 
Zurück