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來跟蹤它,發現損壞的數據位置不固定。
任何幫助真的很感激。
每次都有同樣的錯誤? – xmoex
我建議你發佈代碼的初始化和訪問部分。另外,要確認:數據不是從文件加載的,而是您初始化的,更正? – gnometorule
python錯誤只是意味着GDB漂亮的打印機插件無法理解發送給它的數據。由於您似乎有某種內存損壞,這並不奇怪。您應該發佈您的實際C++代碼供我們查看。 –