Проблема с выделением памяти для char * в c ++

Так что у меня возникают проблемы с выделением памяти для char *, передаваемого в конструктор моего класса shape, я получаю сообщение об ошибке «malloc:* ошибка для объекта 0x1001000e0: освобожденный указатель не был выделен ". Я много гуглил, и я нахожу ответы, но они не имеют смысла, я не понимаю, в чем дело. shapeName является защищенным символом * элементом формы. Square это дитя формы. Если кто-то может объяснить, что не так, это будет высоко оценено, спасибо.

Мой конструктор:

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

Мой Деструктор:

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

Конструктор квадрата:

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

Мой вызов:

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

Ответы на вопрос(1)

Ваш ответ на вопрос