Что делать, если выскакивает точка останова при освобождении памяти delete[] name?
Что делать, если выскакивает точка останова при освобождении памяти delete[] name? Я новичок в с++

Ship.cpp файл:
#include "Ship.h"
Ship::Ship(const char* Name, const char* Type, int Displ)
{
name = new char[strlen(Name) + 1];
strcpy(name, Name);
type = new char[strlen(Name) + 1];
strcpy(type, Type);
displ = Displ;
cout << "Вызван конструктор с параметрами" << endl;
}
Ship::~Ship()
{
delete[] name;
delete[] type;
cout << "Вызван деструктор" << endl;
}
void Ship::SetName(char* Name)
{
name = Name;
}
void Ship::Show()
{
cout << "Ship: " << name << endl;
}
Ship.h заголовочный файл:
#pragma once
#include <iostream>
#include <cstring>
using namespace std;
class Ship
{
char* name;
char* type;
int displ;
public:
Ship(const char* Name, const char* Type, int Displ);
~Ship();
void SetName(char* Name);
void Show();
};
cpp файл с main:
#include <iostream>
#include "Ship.h"
using namespace std;
int main()
{
setlocale(LC_ALL, "ru");
Ship ship2("Титаник", "Лайнер", 52310);
ship2.Show();
char Name[] = "Кит";
ship2.SetName(Name);
ship2.Show();
}
Ответы (1 шт):
Автор решения: Mikhailo
→ Ссылка
Вы пытаетесь удалить неудаляемое. Вам надо копировать строку, только и всего. А старую удалять, а то у вас течка памяти...
void Ship::SetName(char* Name)
{
delete[] name;
delete[] type;
name = new char[strlen(Name) + 1];
strcpy(name, Name);
}