微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何使用 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后面,避免复制对象时的内存管理麻烦。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。