AIX使用g 編譯的程式使用異常時的問題

2021-06-06 22:22:53 字數 476 閱讀 5068

繼解決了aix上各種奇怪的缺少編譯選項導致的問題之後,我又碰到了新的問題。

程式在不斷丟擲異常的情況,程式不是很穩定。我使用了乙個string來儲存異常的資訊,然而在實際執行中發現,經過多次異常丟擲(有時侯需要很多)後,會出現該string有奇怪的表現。比如說,在重新丟擲異常進行拷貝的時候,string的引用變為null;或者在打出異常資訊的時候,string的引用變為null。

工期緊的情況下面對這樣的問題是比較讓人鬱悶的,因為對異常機制的不了解,我只能繼續撞大運程式設計(我討厭這麼做,只能說是病急亂投醫)。考慮到程式另乙個丟擲異常的地方從來沒出錯過,而那裡丟擲的異常是otl的異常,otl使用了char陣列來記錄異常資訊。所以我猜測,aix上g++所實現的異常機制,在多執行緒情況,如果存在動態記憶體分配(stl string),會存在缺陷。

我做出撞大運的改動,將基類中的異常類記錄異常資訊的成員變數由string改為char陣列。結果,經過3天的測試,前面的問題不再出現,程式執行正常穩定。

g 編譯工具使用

1 預處理 展開巨集,去掉注釋資訊等 gcc e codetest.c o codetest.i 2 生成物件檔案 gcc c codetest.i o codetest.o 3 生成可執行檔案 gcc codetest.o o codetest 至此,生成了可執行檔案codetest,在命令列下執...

g 編譯使用方法

用g 編譯單個原始檔myprog.cc很簡單,只要把檔名當引數傳給g 就行了。g myprog.cc ls l rwxr xr x 1 wvh users 13644 oct 5 16 17 a.out rw r r 1 wvh users 220 oct 5 16 17 myprog.cc 預設情...

使用GCC和G 編譯

1 編譯c檔案 main.c檔案內容如下 include int main printf hello world return 0 然後進行編譯 gcc o 目標名 c語言檔名如 deepfuture deepfuture desktop gcc o dp main.c deepfuture dee...