猿问

cout打印动态字符数组

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

为什么内存会出错???


叮当猫咪
浏览 771回答 2
2回答

心有法竹

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

开心每一天1111

char()改成char[]
随时随地看视频慕课网APP
我要回答