Probleme beim Zuweisen von Speicher für char * in c ++

Daher habe ich Probleme beim Zuweisen von Speicher für ein Zeichen *, das an den Konstruktor meiner Shape-Klasse übergeben wird. Es wird immer wieder die Fehlermeldung "malloc:* Fehler für Objekt 0x1001000e0: Zeiger wurde nicht freigegeben ". Ich habe viel gegoogelt und finde Antworten, aber sie ergeben keinen Sinn. Ich verstehe nicht, was falsch ist. shapeName ist ein geschütztes char * -Mitglied von shape. Square ist ein Kind von Gestalt. Wenn jemand erklären könnte, was falsch ist, wäre das sehr dankbar, danke.

Mein Konstruktor:

Shape::Shape(Point* origin,char* name) {
   this->origin = origin;
   this->shapeName = (char*) new char(strlen(name)+1);
   strcpy(shapeName, name);
}

Mein Destruktor:

Shape::~Shape() {
   delete shapeName;
   delete origin;
}

Square's Konstruktor:

Square::Square(Point* origin, char* squareName, double side) 
: Shape(origin, squareName){
   side_a = side;
}

Mein Anruf:

Square s(new Point(5,7),"Square - S", 12);
s.display();

cout << "The area of " << s.getName() << " is: " << s.area() << endl;
cout << "The perimeter of " << s.getName() << " is: " << s.perimeter();

Antworten auf die Frage(1)

Ihre Antwort auf die Frage