Vector Classe Hilfe
-
Hallo Leute ich habe ein Problem mit meiner Vector Klasse. Erstmal hier der Code. Weiter unten die Fehlerbeschreibung.
Vector.hclass Vector { public: Vector(int l); ~Vector(); void set_element(int pos, double value); double get_element(int pos); void get_size(int *length); double mult(Vector *vector_b); private: int vlength; double *comp; };
Vector.cpp
#include <iostream> #include "Vector.h" using namespace std; Vector::Vector(int l) { vlength=l; comp=new double[vlength]; } Vector::~Vector() { delete[] comp; } void Vector::set_element(int pos, double value) { comp[pos]=value; } double Vector::get_element(int pos) { double value=comp[pos]; return value; } void Vector::get_size(int *length) { *length=vlength; } double Vector::mult(Vector *vec2) { int vec1_len; double product = 0; (*vec2).get_size(&vec1_len); for(int i=0; i<=vec1_len; i++) { double an =comp[i]; product=product+ an *(*vec2).get_element(i); } return product; }
main.cpp
#include <iostream> #include "vector.h" using namespace std; int main() { Vector v1(1); Vector v2(1); v1.set_element(0,1); v1.set_element(1,2); v2.set_element(0,2); v2.set_element(1,2); }
Und nun die Fehlerbeschreibung: Beim Aufruf des Destruktors, wenn ich mit delete den Speicher wieder Freigebe stürzt das Programm ab
was habe ich falsch gemacht.
Vielen dank im vorraus
-
ADA_ADA schrieb:
int main() { Vector v1(1); Vector v2(1); v1.set_element(0,1); v1.set_element(1,2); v2.set_element(0,2); v2.set_element(1,2); }
Du reservierst in obigem Beispiel nur Speicher für ein Element mit sizeof(double). Schreibst aber auf die Indizes 0 und 1. D.h. du schreibst über den von dir für das Array reservierten Speicher hinaus. => Da kann es schonmal krachen. Wobei es mich wundert, dass es hier erst beim Destruktor der Fall sein soll...
Gruß Caipi
-
Danke ich wurde hier fast wahnsinnig
bei dieser scheisse !!!!!!!!!!!