3

D で SDL-OpenGL アプリケーションを作成しています。これを実現するために Derelict SDL バインディングを使用しています。

アプリケーションの実行が終了したら、SDL をアンロードします。これを行うには、次の関数を実行します。

public ~this() {
    SDL_GL_DeleteContext(renderContext);
    SDL_DestroyWindow(window);
}

ただし、何らかの理由で、あいまいなセグメンテーション違反 (GDB にトレースがない) が発生し、-11 が返されます。デストラクタで SDL を破棄できませんか?使用後に SDL を破棄する必要さえありますか?

私のコンストラクタ:

window = SDL_CreateWindow("TEST", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 1280, 720, SDL_WINDOW_OPENGL | SDL_WINDOW_FULLSCREEN_DESKTOP);
if(window == null) {
    string error = to!string(SDL_GetError());
    throw new Exception(error);
}

renderContext = SDL_GL_CreateContext(window);
if(renderContext == null) {
    string error = to!string(SDL_GetError());
    throw new Exception(error);
}
4

1 に答える 1