2016-11-24 22 views
1

在最近的一個程序中,我在關閉時遇到了一些令人擔憂的隨機崩潰/崩潰,我認爲我縮小了SIGTRAP的範圍,當在特定情況。代碼的主要代碼可以在這裏找到:http://pastebin.com/xp9Cm04Q和瓷磚類在這裏:http://pastebin.com/Niv7SSyF(當buildworld子程序運行時出現問題)和控制檯輸出可以在這裏找到http://pastebin.com/7HyaMke8。如果這種情況值得了解,調試器會轉到new_allicator。在C++中調試sigtrap

另外請注意,由於某種原因,除去了瓷磚中的rTest調用(它只能調用該類所具有的RNG),但只有在自此之後創建了另一個子區域的情況下。毋庸置疑,我對這種情況發生的原因感到十分困惑。

我在這裏做什麼愚蠢的事情?我只使用std庫,所以我不認爲我可以安裝它們錯誤或任何東西。這是我可以/應該忽略的問題嗎?對於如何解決這個問題的任何幫助都非常感謝。

+0

你定義分區和瓷磚的拷貝構造函數? –

+0

不,我沒有。我會嘗試添加它們並查看它是否會改變任何內容。 – Nesou2

+0

在創建一個只複製類中所有值的簡單拷貝構造函數(不確定這是否與默認值相同)後,錯誤仍然存​​在。據我所知,我沒有使用任何時髦的內存管理,因此爲什麼我不打擾做複製構造函數。我應該做一個嗎? – Nesou2

回答

0

tiles.back().back().giveRGen(&zoneRGen);

一個問題:你的瓷磚有一個鏈接到RNG對象;該鏈接將被破壞,然後複製subZone。例如這裏:

allZones.push_back(subZone(x , y , worldRGen()));