读取字符串字符时出错。分配内存

时间:2017-01-03 10:25:12

标签: c++ string memory null character

我正在使用此代码。

也许这很容易,但现在我做不到。请帮我解决这个问题。我在这个函数中看起来总是为NULL。

我该如何解决这个问题?我不能这样做。

非常感谢。

代码:

    int my_len(const char* p) {

        int c = 0;
        while (*p != '\0')
        {
            c++;
            *p++;
        }
        return c;
    }


String::String()
    :m_str(NULL)
{
}


String::String(char * other_str)
{
}
 {

    int mystrlen = my_len(m_str);
    int myrhslen = my_len(other_str.m_str);

    if (mystrlen != myrhslen)
    {
        return false;
    }
    else
    {
        for (int i = 0; i < mystrlen; i++)
        {
            if (m_str[i] != other_str.m_str[i])
            {
                return false;
            }
        }
        return true;
    }
}
}

1 个答案:

答案 0 :(得分:1)

您的非默认构造函数具有空实现:

String::String(char * other_str)
{
}

所以这里m_str未初始化。 你可以复制字符串,如果这是你的意图:

String::String(char * other_str)
{
    m_str = strdup(other_str);
}

但是你必须自己管理由strdup分配的内存,例如:在析构函数中:

String::~String()
{
    if (m_str != NULL)
        free(m_str);
}