c++ - 由于段错误 :11 程序执行停止

标签 c++ segmentation-fault

我的程序处理访问在类中定义的结构的属性。当我使用 struct 类型的指针来显示结构的属性时,它会引发段错误并停止执行。如果我只使用 struct 类型的变量,它可以很好地打印结构的属性。我尝试使用 gdb 调试代码,它显示段错误发生在第 27 行,即 poly.params->a = 1;。为什么我们不能在这种情况下使用指针,或者我犯了一个愚蠢的错误?这是代码示例:

#include <iostream>

using namespace std;

class QuadraticFunc
{
  public:
    QuadraticFunc(){};
    struct Coeff
    {
        double a;
        double b;
        double c;
    } * params;
    void ParamShow(const Coeff *params)
    {
        cout << "a: " << params->a << endl;
        cout << "b: " << params->b << endl;
        cout << "c: " << params->c << endl;
    }
    ~QuadraticFunc(){};
};

int main()
{
    QuadraticFunc poly;
    poly.params->a = 1;
    poly.params->b = 2;
    poly.params->c = 1;

    QuadraticFunc *polyPtr;

    polyPtr = &poly;

    cout << "The parameters for the first object: " << endl;
    polyPtr->ParamShow(poly.params);
}

最佳答案

poly.params->a = 1;

params 尚未初始化。

替换

struct Coeff
{
    double a;
    double b;
    double c;
} * params;

struct Coeff
{
    double a;
    double b;
    double c;
} params;

然后将每个params->替换为params.

关于c++ - 由于段错误 :11 程序执行停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54778845/

相关文章:

c++ - 抛出异常时可以使用哪种指针?

c++ - 禁止从构造函数调用纯虚方法的编译器选项

c - 可能错误使用内存段错误

python - 为什么这个 C 方法会出现段错误?

c++ - 处理c中的插件

c - C 中的免费通用链表 - 段错误

c++ - 使用 std::memory_order_acq_rel 和一个原子变量来进行 add/sub/inc/dec 是否足够?

c++ - 递归地将模板模板传递给模板模板函数

debugging - 空程序段错误

c++ - 从const char arr []转换为char **