2011-03-29 138 views
0

我有一個簡短的程序example.cc如下:C++拋出異常,段錯誤

#include <stdio.h> 
int main() 
{ 
    try { 
     throw 999; 
    } catch (int i) { 
    printf("Catch i:%d", i); 
    } 
} 

如果我單獨編譯這個程序,它工作正常, 然而,當我與其他目標文件鏈接,它失敗,報告分段錯誤,我不明白爲什麼..

+5

那麼,其他的目標文件是什麼? – GManNickG 2011-03-29 03:43:26

+3

@GMan:'static int * f(){return 0; } static int globalx = * f();',當然:) – 2011-03-29 03:47:02

+0

除非我們知道鏈接到的其他目標文件中發生了什麼,否則很難總結出任何結論。請發佈源代碼或jist目標文件中發生的事情,我們可以幫助您。 – 2011-03-29 04:24:49

回答

1

爲什麼不看看調試器,看看段錯誤發生的地方?

你最小的樣品很好。我看不到任何會導致任何問題的東西。很明顯你的其他目標文件有問題。

這是C++,因此很有可能在啓動過程中構建其他對象文件中的靜態對象,或者在程序終止過程中構建靜態對象並導致問題。