首页 > 解决方案 > 错误 - 在复制构造函数中在 0x7C0708F0 处引发异常并且无法运行程序

问题描述

我正在尝试运行C++代码并在复制构造函数中获取错误。

错误是-

在 0x7C0708F0 (ucrtbased.dll) 处引发异常:0xC0000005:访问冲突读取位置 0x00000000。

// Default constructor
Token::Token()
{
    text = NULL;   // default constructor creates an empty C-String
}


// Explicit normal Constructor
Token::Token(const char* newtoken, int LineNumber) // const is not applied please check
{
    text = new char[strlen(newtoken) + 1];
    strcpy(text, newtoken);
    
    number_list.pushBack(LineNumber);
}

//Copy Constructor
Token::Token(const Token& token)
{
    int len = strlen(token.text);    -----> error on this line
    text = new char[len + 1];
    *text = *token.text;
}

以下是上述代码的头文件代码是-(仅显示代码的必需部分,否则它是一个很长的程序)

class Token
{
private:
    char* text{ };  //pointer to array of characters
    IntList number_list;  // manages the list of numbers

public:

    Token(const char*, int); // const is not applied please check
    Token();
    Token(const Token&); // copy constructor
    Token(Token&&); // move constructor
    Token& operator=(const Token& rhs); // copy assignment constructor

标签: c++

解决方案


你应该切换到 std::string, idk。除非因为某种原因被禁止。


推荐阅读