Guten Tag,
gleich vorneweg, ich bin kein C/C++ Entwickler, will aber um die Sprache besser kennenzulernen ein älteres Projekt nochmal in der Sprache entwickeln
Ich habe folgende Structs:
double x;
double y;
};
struct PointContainer {
int size;
Point* points;
};```
Und folgende Operation zum "Addieren" zweier PointContainer:
```PointContainer add(PointContainer container1, PointContainer container2) {
PointContainer result = {};
result.size = container1.size + container2.size;
Point* points = new Point[result.size];
points = container1.points;
Point* temp = points + (sizeof(Point) * container1.size);
temp = container2.points;
result.points = points;
return result;
}```
Zum Test nutze ich zwei Container, die denselben Inhalt haben, folgende 12 Punkte:
[2.000000, 2.000000]
[3.000000, 4.000000]
[5.000000, 2.000000]
[9.000000, 3.000000]
[10.000000, 5.000000]
[11.000000, 4.000000]
[12.000000, 3.000000]
[12.000000, 6.000000]
[4.000000, 8.000000]
[6.000000, 8.000000]
[4.000000, 10.000000]
[7.000000, 10.000000]
Wenn ich nun zwei Container mit je diesen 12 Punkten "addiere", erhalte ich folgendes Bild:
[2.000000, 2.000000]
[3.000000, 4.000000]
[5.000000, 2.000000]
[9.000000, 3.000000]
[10.000000, 5.000000]
[11.000000, 4.000000]
[12.000000, 3.000000]
[12.000000, 6.000000]
[4.000000, 8.000000]
[6.000000, 8.000000]
[4.000000, 10.000000]
[7.000000, 10.000000]
[0.000000, 2.000000]
[2.000000, 3.000000]
[4.000000, 5.000000]
[2.000000, 9.000000]
[3.000000, 10.000000]
[5.000000, 11.000000]
[4.000000, 12.000000]
[3.000000, 12.000000]
[6.000000, 4.000000]
[8.000000, 6.000000]
[8.000000, 4.000000]
[10.000000, 7.000000]
Wie man sieht, ist die erste Liste komplett drin, bei der zweiten "schleicht" sich am Anfang eine 0 ein und alle anderen Werte sind dementsprechend verrutscht.
In der Funktion setze ich (nach meinem laienhaften Verständnis) eigentlich den Pointer korrekt auf das Ende des ersten Containers um: Größe des Structs Point * Menge an Elementen
Habe ich da irgendwo einen groben Schnitzer drin?
Grüße,
Shadoka