为了账号安全,请及时绑定邮箱和手机立即绑定

cout打印动态字符数组

cout打印动态字符数组

C++
叮当猫咪 2018-08-03 20:44:41
#include <iostream>using namespace std;class mstring {public:     mstring(const char* str)     {         length = strlen(str);         m_char = new char(length + 1);                  strcpy_s(m_char, length + 1, const_cast<char*>(str));     }    friend ostream& operator<<(ostream& out,const mstring& str)     {        if (NULL != str.m_char)         {             out << str.m_char;            return out;         }     }     ~mstring()     {        if (m_char != NULL)         {            delete m_char;             length = 0;         }            }    char* m_char;    int length; };int main(){     mstring* mstr = new mstring("Hello World!");    cout << mstr;    return 0; }`为什么内存会出错???
查看完整描述

2 回答

?
心有法竹

TA贡献1866条经验 获得超5个赞

首先你创建的mstr没释放,new后面没delete
其次友元函数里面没有覆盖,if要是没进去返回什么呀?
还有就是楼上的 new char() -> new char[]

查看完整回答
反对 回复 2018-08-05
?
开心每一天1111

TA贡献1836条经验 获得超13个赞

char()改成char[]

查看完整回答
反对 回复 2018-08-05
  • 2 回答
  • 0 关注
  • 768 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信