不明白为什么我会出现异常:访问冲突读取位置 0x00000000

Don't Understand Why I am Getting Exception: Access violation reading location 0x00000000

我正在研究一个 class 与 c 字符串一起工作,并且我创建了一个成员函数,该成员函数 returns 调用对象(它是一个 c 字符串)的长度。当我 运行 我得到的代码 Project5.exe 中的 0x0F63F6E0 (ucrtbased.dll) 抛出异常:0xC0000005:访问冲突读取位置 0x00000000。 我不知道如何解决这个问题。我不太确定我需要多少代码,但希望下面的代码片段就足够了。

MyString::MyString(const char* aString) //memberString is a    c-string object
{
    memberString = new char[length() + 1];
    strcpy(memberString, aString);
}

int MyString::length() //Exception gets raised here
{
    return strlen(memberString); //Exception gets raised here
}

你的问题是

  • length() 需要 memberString 到 return 存储数据的大小,
  • memberString 需要 length() 才能创建。

我认为你的构造函数不应该依赖于其他成员函数。

关于:

MyString::MyString(const char* aString) //memberString is a    c-string object
{
    memberString = new char[strlen(aString) + 1];
    strcpy(memberString, aString);
}