我这里有C语言的代码,
当else语句存在时,我试图打印指针引用,得到一个seg错误。打印if(视频播放)部分中的指针引用时,打印效果很好,但在该部分之外的任何地方,它都会中断。
omxPlayer定义为FILE*omxPlayer=NULL;

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

最佳答案

videoPlaying != 0时,您应该检查代码的控制流,很可能您正在该流中的某个位置损坏内存。仅仅打印出损坏指针的地址仍然可以正常工作,因为地址总是有效的,只有该地址中的内容无效,所以肯定还有一些错误,在您显示的代码中看不到。
你最好的选择是检查代码或者在valgrind或任何这样的内存分析工具下运行代码,它应该指出你的错误。

10-08 06:02