2011-06-15 4 views
0

私はC++を初めて使っています。私は、Visual Studio 2010でfreeglutを使ってPongのレプリカをプログラムしようとしています。オブジェクト指向にするためにいくつかのリビジョンを作成するまで、 。私はもう一度それを走らせたが、私はちょっとした編集をするまで数回働いた(正直言って、翌朝私のコードを作成しただけなので、私が変更したことは覚えていない)。実行時にエラーが発生しました。ポインタエラーデバッグヘルプ

Pong.exeの0x1000bbaeで未処理の例外が発生しました。0xC0000005:0x000000a8というアクセス違反が発生しました。

私はデバッグはあまりよくありませんが、私はこれが私のメインループのglutDisplayFunc()に来ていると思います。私はこれがnullポインタと関係があると思いますが、私は何が分かりません。誰かが私の問題を見つけるのを助けることができますか?以下は

私のプログラム(MAIN.CPP)の該当部分である:事前に

include "header.h" 

using namespace std; 

int main(int argc, char** argv) { 
    //Initialize GLUT 
    glutInit(&argc, argv); 
    glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); 
    glutInitWindowSize(WIDTH, HEIGHT); //Set the window size 

    //Create the window 
    //modesetup(2); 
    //Set handler functions for drawing, keypresses, and window resizes 
    glutDisplayFunc(mainDraw); 
    glutKeyboardFunc(handleKeypress); 
    glutKeyboardUpFunc(handleKeyup); 
    glutSpecialFunc(handleSpecial); 
    glutSpecialUpFunc(handleSpecialUp); 
    glutReshapeFunc(handleResize); 
    glutTimerFunc(25, update, 0); 

    glutMainLoop(); //Start the main loop. glutMainLoop doesn't return. 
    return 0; //This line is never reached 
} 

ありがとう!

編集:すべての機能に非常に標準的な機能を使用する新しいプログラムを作成しましたが、まだこのエラーが発生します。 Freeglutのインストールに何か問題があると思っています。

+1

'glutDisplayFunc'行にブレークポイントを設定し、そのポイントからプログラムを歩いていくとどうなりますか?そして、問題の可能性をより良く感じるために、 'mainDraw'のいくつか/すべてを見る必要があるでしょう。 –

+2

デバッガを使用して、特定の行または関数を取得する必要があります。このようなコードを見せても何の助けにもなりません。本当のロジックもないのです。 – Puppy

+0

あなたはそれを言うと思いました。 glutDisplayFuncでブレークポイントを設定してF11キーを押すと、エラーがすぐにポップアップします。テスト目的のために、私はmainDrawのコードを完全にコメントアウトしました。 – Draksis

答えて

1

F5キーを使用して、Visual Studioでデバッグしてプログラムを実行します。エラーが発生すると、デバッガはあなたに不正なアクセス権を与えることができます。場所のソースコードがない場合は、コールスタックを確認してください。

乾杯&hth。

1

valgrindでプログラムを実行してください。それはあなたに問題に関する多くの情報を与え、クラッシュの直接の原因以外のメモリエラーを指摘するかもしれません。

+0

Windows上にValgrindはありません.LinuxでWineと一緒にアプリケーションを評価する場合を除きます。 –

+0

OKをクリックし、同等のものをWindows上で使用してください。私はいくつかのツールがあると確信しています。 * nixにはvalgrindがあり、Purifyもあります。 –

+0

http://stackoverflow.com/questions/413477/is-there-a-good-valgrind-substitute-for-windows –

1

すでに問題は既に解決済みです。しかし、私は同じ問題を抱えていたし、tは答え2を見つけるcouldnので、それはどこでも私は質問にお答えします:

あなたは単に

glutDisplayFunc(mainDraw); 
glutKeyboardFunc(handleKeypress); 
glutKeyboardUpFunc(handleKeyup); 
glutSpecialFunc(handleSpecial); 
glutSpecialUpFunc(handleSpecialUp); 
glutReshapeFunc(handleResize); 
glutTimerFunc(25, update, 0); 

一部の前に

glutCreateWindow("Windowname"); 

関数を書くのを忘れ。 これはあなたが得る例外につながります。