上でコンパイルする場合にのみ、それが実行されるたび、それがコンパイルされますが、私は、このエラーを与える:ヒープの破損が、私は私のデスクトップに私のラップトップ上で完全に罰金コンパイルプログラムをコンパイルしようとしているラップトップ
Windowsの持っていますRR.exeでブレークポイントがトリガーされました。
これは、 RR.exeまたはそれがロードしたDLLのバグを示す、ヒープの破損による可能性があります。
これは、RR.exeにフォーカスがある間にユーザーがF12キーを押したことが原因と考えられます。
出力ウィンドウには、より多くの診断情報が含まれている場合があります。
if(glfwOpenWindow(width_, height_, 0, 0, 0, 0, 32, 0, GLFW_WINDOW) != GL_TRUE) { throw std::runtime_error("Unable to open GLFW window"); }
私は、例えば、定数で
width_
とheight_
を交換する場合は奇妙なことがある:私はエラーになります行を見つけたまで、私は行をコメントアウトしまし
それぞれ800と600、ヒープの破損を停止します。また、値を渡す代わりにコンストラクタによって設定されたデフォルト値を使用するだけで、クラッシュすることはありません。
完全なコードは次のとおりです。上記の行は、Window
コンストラクタにあります。
window.h
#pragma once
#include <iostream>
#include <GL\glew.h>
#include <GL\glfw.h>
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "glew32.lib")
#pragma comment(lib, "GLFW.lib")
class Window {
public:
Window(unsigned width = 800, unsigned height = 600);
~Window();
void clear();
inline void display() { glfwSwapBuffers(); }
inline bool exit() { return !glfwGetWindowParam(GLFW_OPENED); }
private:
unsigned width_, height_;
};
window.cpp
#include "window.h"
Window::Window(unsigned width, unsigned height) : width_(width), height_(height) {
if(glfwInit() != GL_TRUE) {
throw std::runtime_error("Unable to initialize GLFW");
}
if(glfwOpenWindow(width_, height_, 0, 0, 0, 0, 32, 0, GLFW_WINDOW) != GL_TRUE) { //crash
//if(glfwOpenWindow(800, 600, 0, 0, 0, 0, 32, 0, GLFW_WINDOW) != GL_TRUE) { //no crash
throw std::runtime_error("Unable to open GLFW window");
}
GLenum result = glewInit();
if(result != GLEW_OK) {
std::stringstream ss;
ss << "Unable to initialize glew: " << glewGetErrorString(result);
throw std::runtime_error(ss.str());
}
}
Window::~Window() {
glfwTerminate();
}
void Window::clear() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
}
main.cppに
#include "window.h"
int main() {
Window wind(1024, 800); //crash
Window wind(800, 600); //crash
Window wind(); //works
return 0;
}
+1完全な、比較的短いテスト・ケースを供給するため。 –
はあなたのを確認しました両方のマシンでシステム/ランタイムDLLのバージョンがまったく同じですか? –
これらは、まったく同じDLL、.libs、およびproです。私はドロップボックスにそれらを保つようにject。 – Lerp