我正在使用可处理c字符串的类,并且我创建了一个成员函数,该函数返回调用对象(即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返回存储数据的大小
  • memberString需要创建length()

  • 我认为您的构造函数不应依赖其他成员函数。

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

    关于c++ - 不明白为什么我会出现异常:访问冲突读取位置0x00000000,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55764293/

    10-10 07:25