This question already has an answer here:
Definitive List of Common Reasons for Segmentation Faults
                                
                                    (1个答案)
                                
                        
                                3年前关闭。
            
                    
我创建了两个如下所述的文件

csvreport.h

int flag = 0; //declared && defined


table.cpp

csvreport* csvreports;
csvreports->flag = 1;


它显示分段错误(代码已转储)

任何人都可以解决的吗?

最佳答案

csvreport* csvreports;创建未初始化的指针。尝试使用未初始化的指针会导致未定义的行为。

在堆栈上创建此变量,不使用指针:

csvreport csvreports;


或者,如果需要指针,请先分配它:

csvreport* csvreports = new csvreport;
csvreports->flag = 1;


或通过现代C ++ 11方式使用唯一指针:

auto csvreports = std::make_unique<csvreport>();
csvreports->flag = 1;

09-07 06:15