gpt4 book ai didi

c++ - 析构函数/释放内存的问题

转载 作者:太空宇宙 更新时间:2023-11-04 16:01:30 24 4
gpt4 key购买 nike

所以我是 c++ 的新手,我正在尝试一些基本的动态内存分配,但我已经遇到了一些问题。我不太确定我做错了什么,但我无法运行以下代码:

类声明:

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;
}

我得到的错误信息:

error i get

最佳答案

您必须在构造函数中为您的字符串分配 strlen(...)+1 个字节以容纳结尾的零字节。你现在多写了 1 个字节。

关于c++ - 析构函数/释放内存的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43028103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com