问题描述
我有个问题, 我要写一篇关于C++动态内存管理的论文,但我没学过C++。
对于我想展示的示例代码,如果您在类中使用 new 分配内存,为什么需要使用解构器。但我无法让我的代码工作。 如何编写我的构造函数,以便使用 new 运算符分配字符串名称?
我已有的代码:
class Studi
{
private:
unsigned int matNr;
char* name;
public:
Studi(const string& k_name,unsigned int k_matNr)
{
name = new char[k_name.length()];
strcpy(name,k_name);
matNr = k_matNr;
}
};
感谢您的帮助:)
解决方法
- 您必须为终止空字符再分配一个字节。
- 您可以使用
c_str()
从In(this)
获取 C 风格的字符串。
std::string
另外别忘了跟在The Rule of Three后面,避免复制对象时的内存管理麻烦。