Hi
also speicher allocieren (calloc) funktioniert noch niocht so richtig.
Ich habe eine Tabele, die sich zur laufzeit erweitern soll. Dafür stehen
zwei Variablen zu verfügung:
tabelSize: ist die Anzahl der zu verfügungstehenden Tabelleneinträge und
numOfElements: ist die Anzahl der Eingetragenen werte.
ELEMENT: ist ein Define mit der Schritweite um die sich der Speicher
erhöht.
Das 8., 9. und 10.Element der Tabelle ist nicht korrekt und zeigt auf
einen anderen speicherbereich. Bereich.
hier der Codeausschnitt:
1 | // leere Tabelle erstellen für 5 Einträge erstellen
|
2 | tabelSize = ELEMENTE;
|
3 | Tabelle = (tstZeile*) calloc( tabelSize, sizeof(tstZeile));
|
1 | //evt.Speicher erweitern
|
2 | if(tabelSize < (numOfElements + (ELEMENTE/2)))
|
3 | {
|
4 | tabelSize = tabelSize + ELEMENTE;
|
5 | Tabelle = (tstZeile*) realloc( Tabelle, tabelSize * sizeof( tstZeile));
|
6 | }
|
1 | // Einträge in Tabelle machen
|
2 | numOfElements++
|
3 | Tabelle[numOfElements].id = Zeile.id;
|
4 | Tabelle[numOfElements].element = pElement;
|
5 | Tabelle[numOfElements].pos = Zeile.pos;
|
6 | Tabelle[numOfElements].elementType = Zeile.elementType;
|
7 | Tabelle[numOfElements].parent = Zeile.parent;
|
Könnt ihr mir sagen was ich da falsch mache? Ich habe schon ausprobiert
die Schrittweite zu vergrößern, aber da verschiebt sich der Fehler nur.
Im anhan hab ich nochmal das ganze Projekt. Fals jemand die paar Zeilen
nachlesen will.