关于c++,想知道哪出问题了

运行程序时运行到一半就停了,然后就报了这个错

img


下面是其中的一部分代码

img


img

引用chatgpt部分指引作答:
根据代码,可能的原因是在FString构造函数中,没有正确初始化sString指针,导致在后续调用字符串操作函数时出现指针错误,进而导致程序崩溃。您可以将sString初始化为一个空字符串或者将其初始化为一个长度为1的字符串。

最后,建议使用C++中的std::string代替C语言中的char*类型,可以更方便、更安全地进行字符串操作。

sString是个字符串,你给它赋值为0是几个意思

访问空指针了,仔细调试一下

表明系统在读取地址0x0000000000000000时发生了异常,可能是由于对一个空指针进行了读操作引起的.断点调试看看

表明系统在读取地址0x0000000000000000时发生了异常,可能是由于对一个空指针进行了读操作引起的.断点调试看看

你的char* sString没有new。

    char* sString;
    sString= new char[100];
    sString= { 0 };

长度给零,字符串怎么也给零

以下答案由GPT-3.5大模型与博主波罗歌共同编写:
很抱歉,由于你没有提供程序实际运行的错误信息,我无法确定你程序中的问题是什么。但是,一般情况下程序在运行到一半就停止并报错的原因可能有以下几种:

  1. 运行时崩溃:在程序运行过程中,可能会出现指针问题、内存泄漏等导致程序崩溃的情况。这时运行程序的时候,程序会停止运行,并显示错误信息。可以使用工具来检测程序是否存在内存泄漏和其他问题,比如Valgrind。

  2. 死循环:程序可能会出现死循环的情况,导致程序无法顺利执行完毕。这时程序会一直运行下去,没有出现错误提示,需要在代码中添加跳出循环的条件。

  3. 资源占用:程序可能会占用太多的系统资源,导致系统资源不足而崩溃。这时可以检查程序是否存在资源泄漏的问题,比如文件没有关闭、线程没有回收等。

为了更好地解答你的问题,你需要提供更多的程序和错误信息。下面是一个简单的示例,如果你能提供你的程序和错误信息,我可以帮助你更好地解决问题。

#include <iostream>

using namespace std;

int main()
{
    for(int i=0; i<10; i++) {
        cout<<"Hello"<<endl;
    }
    int* p = new int[100];
    p[0] = 1;
    cout<<p[0]<<endl;
    delete[] p;
    return 0;
}

在这个例子中,程序会先循环输出10次“Hello”,然后创建一个大小为100的整型数组,赋值为1,并输出第一个元素的值。最后,释放动态分配的数组并结束程序。

如果在程序运行时出现了问题,可能会带有错误信息。比如,如果内存分配失败,会输出以下错误信息:

terminate called after throwing an instance of 'std::bad_alloc'
  what():  std::bad_alloc
Aborted (core dumped)

这个错误信息表示内存分配失败,导致程序崩溃。因为在程序中使用了new操作符来动态分配数组内存,但是系统没有足够的内存可供分配。可以考虑使用智能指针等技术来避免这种问题的发生。
如果我的回答解决了您的问题,请采纳!