destructor/freeing 内存问题
Issues with destructor/freeing memory
所以我是 c++ 的新手,我正在尝试一些基本的动态内存分配,我已经 运行 遇到了一些问题。我不太确定我做错了什么,但我不能 运行 以下代码:
Class声明:
class Car {
double maxSpeed;
bool isNew;
char* manufacturerName;
public:
Car(double = 0, bool = true, char* = "Unknown");
~Car();
Car& operator=(const Car&);
};
构造函数实现:
Car::Car(double maxSpeed, bool isNew, char* manufacturerName) {
this->maxSpeed = maxSpeed;
this->isNew = isNew;
this->manufacturerName = new char[strlen(manufacturerName)];
strcpy(this->manufacturerName, manufacturerName);
}
析构函数实现:
Car::~Car() {
delete [] manufacturerName;
}
主要:
int main() {
Car C(250.0, true, "Name1");
Car C1(180.0, false, "Name2");
Car C2;
cout << C << C1 << C2;
return 0;
}
我收到的错误消息:
您必须在构造函数中为您的字符串分配 strlen(...)+1 个字节以容纳结尾的零字节。你现在多写了 1 个字节。
所以我是 c++ 的新手,我正在尝试一些基本的动态内存分配,我已经 运行 遇到了一些问题。我不太确定我做错了什么,但我不能 运行 以下代码:
Class声明:
class Car {
double maxSpeed;
bool isNew;
char* manufacturerName;
public:
Car(double = 0, bool = true, char* = "Unknown");
~Car();
Car& operator=(const Car&);
};
构造函数实现:
Car::Car(double maxSpeed, bool isNew, char* manufacturerName) {
this->maxSpeed = maxSpeed;
this->isNew = isNew;
this->manufacturerName = new char[strlen(manufacturerName)];
strcpy(this->manufacturerName, manufacturerName);
}
析构函数实现:
Car::~Car() {
delete [] manufacturerName;
}
主要:
int main() {
Car C(250.0, true, "Name1");
Car C1(180.0, false, "Name2");
Car C2;
cout << C << C1 << C2;
return 0;
}
我收到的错误消息:
您必须在构造函数中为您的字符串分配 strlen(...)+1 个字节以容纳结尾的零字节。你现在多写了 1 个字节。