2011-11-19 54 views
0

我有一個單線程C++程序,其中一個向量<structType>包含一些數據。 矢量大小不大,例如77. structType有3個字符串,3int,4個double。 初始化矢量後,我需要訪問矢量的數據。但是,一些數據被破壞,例如,字符串中的structType變得怪異的痕跡,讓我得到了錯誤:在我的C++代碼爲什麼矢量中的某些數據被更改而沒有被任何其他函數訪問?

File "/usr/share/gdb/python/libstdcxx/v6/printers.py", line 469, in to_string 
return self.val['_M_dataplus']['_M_p'].string (encoding, length = len) 
OverflowError: signed integer is less than minimum 

我從來沒有使用蟒蛇。 初始化後,在訪問矢量之前,矢量不能被任何其他函數訪問。爲什麼數據改變了?

我用GDB來跟蹤它,發現損壞的數據位置不固定。

任何幫助真的很感激。

+0

每次都有同樣的錯誤? – xmoex

+1

我建議你發佈代碼的初始化和訪問部分。另外,要確認:數據不是從文件加載的,而是您初始化的,更正? – gnometorule

+0

python錯誤只是意味着GDB漂亮的打印機插件無法理解發送給它的數據。由於您似乎有某種內存損壞,這並不奇怪。您應該發佈您的實際C++代碼供我們查看。 –

回答

0

我會建議硬重置調試器。幫助我很多次。

+0

我開始了一個新的GDB並得到了同樣的錯誤。 – Jack

相關問題