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 に答える