我用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);
}发布于 2013-01-09 11:12:59
当videoPlaying != 0时,你应该检查你的代码的控制流,最有可能的是你在那个流中的某个地方损坏了内存。只是打印出一个损坏的指针的地址应该仍然可以工作,因为它总是有效的,只有地址中的内容是无效的,所以肯定有更多的东西是错误的,并且在您显示的代码中看不到。
您最好的选择是检查代码,或者在、valgrind、或任何类似的内存分析工具下运行代码,它应该会指出错误所在。
https://stackoverflow.com/questions/14227699
复制相似问题