我在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);
}
答案 0 :(得分:2)
您应该在videoPlaying != 0
时检查代码的控制流,很可能您正在破坏该流中某处的内存。只打印出已损坏指针的地址应该仍然可以正常工作,因为地址始终有效只有该地址中的内容无效,所以肯定会出现更多错误,而且在您显示的代码中看不到。
您最好的选择是查看代码或在 valgrind 或任何此类内存分析工具下运行您的代码,它应指出您的错误。