2012-12-03 100 views
1

我是新來的Linux &代碼塊。當編譯下面的代碼時,我收到此錯誤:分段故障處理返回139(0x8b)

"segmentation fault process returned 139 (0x8b)"

我知道它與內存有關,但我找不到問題。在使用Makefile編譯文件或在終端中單獨編譯時,我不會收到任何錯誤。

main接收2個參數(argv) ComputersInNet.txt - > argv[1] Simulation.txt -> argv[2]

,我無法弄清楚如何我這些文件使用的代碼塊中的Windows(Visual Basic中)添加到項目中,也代碼完美的作品。

我不能正確粘貼代碼(5個文件:2 h和3的.cpp),你可以從下面的鏈接,包括我作爲參數,使用txt文件下載。

http://depositfiles.com/files/cv2bwmz74

+4

嘛,經常在一個系統中的段錯誤運行在另一個很好,因爲內存溢出的後果取決於什麼在你超速的內存,這是與平臺相關的,所以我不會擔心,爲什麼它適用於一個和不是另一個。也就是說,你是否檢查了所有的指針以確保它們已被初始化,而不是NULL? – RonaldBarzell

+4

在這裏發佈代碼,而不是讓我們下載並unrar它;) –

+0

是的,我剛剛訪問鏈接,看到下載設置,並且不願意。 – RonaldBarzell

回答

2

的代碼片段問題發生,子程序Create_PC_List()從主調用()來創建的計算機的列表。

void Router :: Create_PC_List (char *fname) //Reads from file & creates list of computers 
{ 
char C; 
char* IPAD=NULL; 
FILE* fp; 
FILE* msg; 
int counter=0; 
fp = fopen (fname,"r"); //Reading from Argv parameter file - list of computers in the network 
if(fp == NULL) 
     cout << "Opening file failed: %s\n" << strerror(errno) << endl; 
msg = fopen (fname, "r"); //Reading from Argv parameter file - list of computers in the network 
    while((C=fgetc(fp)) != EOF) //Running trougth the file 
{ 
    ... 

輸出:

Opening file failed: No such file or directory 
followed by segmentation fault. 

我們可以看到fopen()函數失敗,錯誤 「沒有這樣的文件或目錄」。因此,您需要找到一種方法將三個文本文件添加到可用於fopen()的代碼塊中。

其次原因分割故障FP提供到GETC()是含有NULL地址不是一個有效的文件對象FILE *指針。

+0

感謝您的快速回放!iv'e嘗試添加這些文件,正如我之前提到的,但我懷疑我做的是否正確。這是我在代碼塊中寫入文件名的地方: http://postimage.org/image/9kauxc42b/ 但我仍然收到相同的分段錯誤。任何建議? –

+0

@DavidFaiz我認爲這些.txt的文件應放置在項目菜單 - >程序參數中,而不是在主機應用程序中。檢查CB幫助論壇。 –

+0

在這個鏈接中,你可以看到我沒有地區可以寫出文件名 postimage.org/image/9kauxc42b –