1

我在 C 中有这段代码,

当 else 语句存在时,我尝试打印指针引用,我得到一个段错误。在 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);
}
4

1 回答 1

2

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

您最好的选择是查看代码或在valgrind或任何此类内存分析工具下运行您的代码,它应该会指出哪里出了问题。

于 2013-01-09T03:12:58.797 回答