Problema ao obter memória alocada para char * em c ++

Então, estou tendo problemas para alocar memória para um char * sendo passado para o construtor da minha classe de forma, continuo recebendo um erro dizendo "malloc:* erro para o objeto 0x1001000e0: ponteiro sendo liberado não foi alocado ". Eu fiz um monte de googling e eu encontrar respostas, mas eles não fazem sentido, eu não entendo o que está errado. shapeName é um char protegido * membro da forma. é uma criança de forma Se alguém pudesse explicar o que está errado, seria muito apreciado, obrigado.

Meu Construtor:

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

Meu Destruidor:

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

Construtor da Square:

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

Minha chamada:

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