if语句的段错误

时间:2013-01-09 03:08:56

标签: c segmentation-fault

我在C中有这个代码,

当那个else语句出现时,我尝试打印指针引用,我得到一个seg错误。在if(videoPlaying)部分打印指针引用,打印正常,但在其外的任何地方,它都是段错误。

omxPlayer定义为FILE * omxPlayer = NULL;

if(videoPlaying == 0)
{
    omxPlayer = popen("omxplayer diehard.mp4", "w");
    printf("%p\n", omxPlayer);
    videoPlaying = 1;
}
else
{
    printf("%p\n", omxPlayer);
}

1 个答案:

答案 0 :(得分:2)

您应该在videoPlaying != 0时检查代码的控制流,很可能您正在破坏该流中某处的内存。只打印出已损坏指针的地址应该仍然可以正常工作,因为地址始终有效只有该地址中的内容无效,所以肯定会出现更多错误,而且在您显示的代码中看不到。

您最好的选择是查看代码或在 valgrind 或任何此类内存分析工具下运行您的代码,它应指出您的错误。