程序编译时没有错误,但执行期间会出现段错误

时间:2018-02-11 17:31:10

标签: c pointers struct segmentation-fault dynamic-memory-allocation

以下代码编译得很好,但是当我运行它时,它会进入while循环然后SegFaults。输入文件是CSV文件。该程序应该从CSV文件中获取数据并将其解析为结构,然后将结构发送到以特定格式将其打印到stdout的函数。

1 个答案:

答案 0 :(得分:1)

您的机场指针为空,因此当您尝试设置它的元素时,您取消引用空指针。要修复,要像这样自动存储:

airPdata airport;

并将其传递给printData,如下所示:

printData(&airport)

或者用malloc分配它:

airPdata *airport = malloc(sizeof(*airport));

但是当你完成它时,请确保free

另外,正如您所看到的那样,仅仅因为您的C程序编译并不意味着它是正确的。 C真是无情,特别是在内存方面,所以你一定要密切关注你如何处理内存,也许可以考虑对你的程序进行单元测试。