memcpy mit zeigern?...
-
hallo leute,
habe n code gebastelt und jetzt funzt der nicht...
ich habe folgendes gemacht...--------------------------------------------------
**Regression.hstruct myPoint{
double x;
double y;
};myPoint * aPoints;
int nPoints;//Hinzufügen der Punkte
int AddPoint ( double x, double y );**Hier habe ich eine Struktur mit einem Wertepaar x&y entworfen,
dann zeiger auf die struktur und dann AddPoint als funktion für die speicherung.
---------------------------------------------------
**Regression.cppint CRegression::AddPoint (double x,double y)
{
myPoint *ptr = new myPoint[nPoints+1]; //Neuen Speicher für ptr holen
if(ptr!=0)
{
memcpy(ptr,aPoints, sizeof(aPoints)); /Inhalt von aPoints
in ptr (1 struct frei für x&y)/
delete aPoints;ptr[nPoints].x=x; //Letzes struct im ptr füllen!
ptr[nPoints].y=y;aPoints=ptr; //aPoints erhält adresse von ptr
}
else
{
std::cout <<
"\n---Fehler: Speicher konnte nicht reserviert werden!---"
<< std::endl;
exit(1);
};
}**Hier will ich zuerst dem Zeiger "ptr" dynamisch einen neuen Speicherbereich zuweisen. Und zwar immer um +1 mehr als der andere gerade hat.
Ich kopiere dann den Inhalt von aPoints nach ptr, lösche aPoints und fülle dann die letzte stelle(+1) mit meinem x&y- wert.
Dann weise ich wieder dem aPoints die adresse, auf die ptr zeigt, zu und fange wieder von vorne an.
Problem:
er bricht ständig bei memcpy ab... "speicherbereichsverletzung" sagt er.Was mache ich falsch, wo ist der Fehler... vielleicht die Zeiger in memcpy??
vielen dank in voraus....
-
if(ptr!=0)Bringt nichts, new liefert keinen Null-Ptr (mehr) zurück. Stattdessen fliegt eine Exception.
delete auf ein new[] = Speicherleck
3. Ist aPoints initalisiert?
-
memcpy(ptr,aPoints, sizeof(aPoints));falsche Länge (die Größe des Zeigers aPoints ist unteressant). aPoints uninitialisiert oder NULL ist undefiniert.
-
aber ich habe doch aPoints in der header-datei initialisiert....
könnte ich einen korrekten ansatz haben?...
-
dieter.g schrieb:
könnte ich einen korrekten ansatz haben?...
std::vector
-
Hallo
nicht zu vergessen : sfds
bis bald
akari
-
dieter.g schrieb:
aber ich habe doch aPoints in der header-datei initialisiert....
Davon ist in deinem Code aber nichts zu sehen. Zumindest keine gültige Initialisierung ungleich Null.