首页 > 解决方案 > Clion:进程以退出代码 139 结束

问题描述

我正在用 C++ 编写一个拼贴练习程序,但我不知道为什么会看到这个错误

进程以退出代码 139 结束(被信号 11 中断:SIGSEGV)

它只是用于测试课程并且它不完整

在 main 中,如果我删除add('a');程序成功运行,但任何函数调用都会导致此错误!

问题是以括号/括号形式读取一棵树并以链表形式制作一棵树

#include<iostream>

using namespace std;

class Tree
{
public:
    char data;
    Tree *right;
    Tree *left;
};

Tree *root;
Tree *temp;

void add(char c)
{
    root->data = c;
}

void addR(char c)
{
    temp = new Tree;
    temp->data = c;
    root->right = temp;
}

void addL(char c)
{
    temp = new Tree;
    temp->data = c;
    root->left = temp;
}

int main()
{
    cout<<2;
    add('a');
    return 0;
}

标签: c++

解决方案


Tree *root;
void add(char c)
{
    root->data = c;
}
int main()
{
    cout<<2;
    add('a'); // <---
    return 0;
}

add('a')通过访问 . 中未初始化的指针root来调用未定义的行为root->data = c;。你应该先初始化它:

root = new Tree();

推荐阅读