Zeiger-troubles in C++

Hallo ich hab folgendes Problem in diesem Code:

struct Ergebnis
{
int *i_ergebnis;
char *ch_ergebnis;
};

main()
{
Ergebnis ergo.
ergo.i_ergebnis = new int[varibale];

// dann wird i_ergebnis mit Werten gefüllt, wobei i_ergebnis[0] = 2 ist
.....................................

// sobald ich das tu:
ergo.ch_ergebnis = new char[variable];

// ist i_ergebnis nicht mehr 2 sondern -8!!!!!!!!!
}


Wieso wird der Wert in i_ergebnis, sobald ich ch_ergebnis allokiere, verfälscht????
Ich hab schon alles mögliche gesucht und versucht komm aber nicht auf den Fehler drauf.

Verwendetes OS: Debian (woody)
Verwendeter Compiler: g++ 2.95.4
Verwendeter
Sprache: (natürlich) C++ *g
 
Code:
ergo.ch_ergebnis = new char[variable];

Hier kannst Du keinen Variablenwert zuweisen sondern nur die Grösse des CHAR-Arrays bestimmen (z.B. 10).

Für die Ausgabe verwende diesen Befehl:

Code:
cout << ergo.i_ergebnis[0];
 
Tu da auch keinen Wert zuweisen. Wenn variable gleich 10 ist kann sollen 10 Array-Elemente erzeugt werden.
Hab mich wohl schlecht ausgedrückt. Sorry
 
Solange du nichts anderes tust, als beide Zeiger auf ein array zu allokieren, und nur einem einen Wert zuweist, dürfte soetwas eigentlich überhaupt nicht vorkommen (nicht einmal, wenn new beiden die selbe adresse zuweist). Das ist also höchst merkwürdig. Hast du es schoneinmal andersherum probiert?
 
Ich hab den Fehler anscheinend schon behoben. Was genau der Fehler war kann ich nicht sagen, es waren viele. Einer zb war das ergo.i_ergebnis zu klein allokiert wurde.
Aber wieso das Ergebnis genau an dieser Stelle(wo ergo.ch_ergebnis allokiert wurde) verfälscht wurde ist mir bis jetzt noch unerklärlich...
 
Zurück
Oben