c++ - 运行时错误,奇怪的行为

标签 c++ runtime-error

我编写了一个模拟 DFA 的代码,但由于 cout 语句而出现运行时错误,删除它后运行正常。

这是代码

#include "bits/stdc++.h"
using namespace std;
struct state
{
    char name = ' ';
    bool final=false;
     state *o;
     state *i;
     state *t;
};
int main() {
     state *A,*B,*C,*D,*E,*initial;
    E->final = true;
    A->name='A';
    B->name='B';
    C->name='C';
    D->name='D';
    E->name='E';
    A->o = B;
    A->i = A;
    A->t = B;
    B->o = E;
    B->i = A;
    B->t = C;
    C->o = A;
    C->i = E;
    C->t = D;
    D->o = C;
    D->i = D;
    D->t = E;
    E->o = E;
    E->i = D;
    E->t = A;
    initial = A;
         cout<<(initial->name);
    int p = 5;
    while(p--) {
        cout<<"current state ";
         cout<<(initial->name);
        int a;
        cin>>a;
        if (a==0) initial = initial->o;
        else if (a==1) initial = initial->i;
        else initial = initial->t;
    }
    return 0;
}

Initial是切换状态并告诉它当前是哪个状态,它在定义的状态之间切换,所以无法理解为什么会丢失数据

代码在 ideone 上给出运行时错误,在 g++ 上给出段错误

最佳答案

but it is giving a runtime error because of the cout statement

我认为这与 cout 无关。您在任何地方都无法创建 state 类型的实际对象,您只有指针,然后取消对它们的引用(例如使用 ->),这是不允许的,除非它们指向相应类型的有效对象。

为了给出更完整的答案,您所拥有的是未定义的行为,因此您的程序处于无效状态,您无法推断其行为。因此,在您看来,cout 中的代码是有问题的,但问题发生在更早的时候,是在第一次使用 -> 时。

关于c++ - 运行时错误,奇怪的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48220538/

相关文章:

python - "error reading PNG header"运行时错误

javascript - Reactjs 类型错误 : Cannot read property 'style' of undefined

java - 错误: cannot find symbol: class FileNotFoundException

c++ - Hook WM_SETTEXT 消息

c++ - 在 QScrollarea 内绘制 QLabel

c++ - 在不同 block 之间使用 C++ 类对象

C++ - thread_local 变量存储在哪里?

c++ - 第二次调用时 cin.getline () 不工作

java - 如何根据组合选择删除JTable中的行

c - 此 C 代码不断给我带来代码块段错误