HW 5中的0x5E10F1C0(ucrtbased.dll)处理未处理的异常Rational pt2.exe:0xC0000005:访问冲突读取位置0xCCCCCCCC。发生了

时间:2017-10-17 04:30:01

标签: c++ pointers strcpy

我很困惑,为什么我收到此错误。我环顾四周,发现有类似错误的人,他们的问题是没有为NULL分配足够的新内存。我没想到这是我的问题,因为我添加了strlen + 1?我迷失了......

//Copy Constructor
Rational::Rational(const Rational& other) :
    m_numerator(other.m_numerator), m_denominator(other.m_denominator), 
m_name(NULL)
{
    m_name = NULL;
    if (other.m_name != NULL)
    {
        this->m_name = new char[strlen(other.m_name) + 1]; //ErrorMarkHere
        strcpy(this->m_name, other.m_name);
    }
}

1 个答案:

答案 0 :(得分:1)

0xCCCCCCCC表示使用某些编译器的未初始化内存。几乎唯一可能在该行上失败的是strlen(other.m_name),其中other.m_name可能是之前提到的指针。 other如何从崩溃的地方构建出来?