如何使用 new 在堆上保存类的字符串变量

问题描述

我有个问题, 我要写一篇关于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后面,避免复制对象时的内存管理麻烦。