Problem z przydzieleniem pamięci dla char * w c ++

Mam więc problem z przydzielaniem pamięci dla char * przekazywanego do konstruktora mojej klasy kształtu, ciągle pojawia się błąd mówiący „malloc:* błąd dla obiektu 0x1001000e0: wskaźnik został zwolniony nie został przydzielony. "Zrobiłem dużo googlingu i znajduję odpowiedzi, ale nie mają one sensu, nie rozumiem, co jest nie tak. shapeName jest chronionym char * członkiem kształtu. Kwadrat jest dzieckiem kształtu.Jeśli ktoś mógłby wyjaśnić, co jest nie tak, co byłoby bardzo mile widziane, dziękuję.

Mój konstruktor:

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

Mój niszczyciel:

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

Konstruktor Square:

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

Mój telefon:

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();

questionAnswers(1)

yourAnswerToTheQuestion