Problemas para obtener memoria asignada para char * en c ++

Por lo tanto, tengo problemas para asignar memoria para un carácter * que se pasa al constructor de mi clase de forma. Sigo recibiendo un error que dice "malloc:* error para el objeto 0x1001000e0: el puntero que se liberó no se asignó ". Hice muchas búsquedas en Google y encuentro respuestas pero no tienen sentido, no entiendo qué es lo que está mal. shapeName es un miembro de forma char * protegido. Cuadrado es un niño de forma. Si alguien pudiera explicar qué es lo que está mal, sería muy apreciado, gracias.

Mi constructor

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

Mi destructor

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

Constructor de Plaza:

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

Mi llamada:

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

Respuestas a la pregunta(1)

Su respuesta a la pregunta