我正在Ubuntu和Windows上編寫一個小型的OpenGL程序。在Windows上它可以很好地工作,但在Ubuntu上,我會在執行期間的不同時間收到「分段錯誤(核心轉儲)」。爲了縮小它的範圍,我用printf()的主循環填充來告訴我它何時崩潰。但這是最奇怪的事情;當它崩潰時,它通常在printf的中間。例如,如果我正在打印「繪圖」,它通常會在撞擊前打印「Dr」。C++:在printf中間出現分段錯誤,但只在Ubuntu上
我沒有任何多線程。我沒有將任何變量傳遞給printf;只是printf(「繪製」),printf(「步驟」)等
我想這可能是唯一的辦法,如果我的着色器在GPU上崩潰,使與CPU異步崩潰活動。所以我刪除了我的着色器(使用標準管道),錯誤仍然發生。 ?:(
任何想法可能會在
編輯該走:對不起,我花了一段時間來找回傢伙,我一直忙於學業
我所在的錯誤 - 我是使用被定義爲一個模函數:
INT模量(INT X,INT米) {返回X - M * STD ::地板((浮點)的x /(浮點)米);}
顯然, float的精度不足以處理rand()的輸出,導致這個函數t o輸出不可能的(負數)值。但將我的類型轉換爲雙重解決了這個問題。對我來說,這似乎很奇怪,崩潰與我的代碼不同步,但我想這一定是SDL在底層使用多線程的結果。
發佈SSCCE和回溯。可能是你的'GL_VENDOR','GL_RENDERER'和'GL_VERSION'字符串。 – genpfault 2014-09-05 18:51:31
當發生這種情況時,通常你會走出數組的界限 – braindf 2014-09-05 18:52:16
你在行42中有未定義的行爲。 – 2014-09-05 18:58:28