2013-01-08 113 views
-5

我想從一個緩衝區中複製數據,我知道它的長度爲從給定索引開始的char [],問題在於數據包含null,所以程序崩潰時出現了分段錯誤錯誤。char *分段錯誤

這裏是我的代碼示例:

char *tmp = list->at(0); //list->at(0) return a pointer to the data 
char *pEnd = tmp; 
for (i = 0; i<size;i++) 
{ 
    buffer[i] = *pEnd ; //<<<-----here I got the segmentation fault 
    pEnd++; 
} 
+5

如果'list-> at(0)'評估爲null,那麼爲什麼你會期望它做任何事情,但seg故障。 –

+0

list [0]是一個包含凸輪數據的緩衝區,這個數據可以包含null。 –

+0

當你修復段錯誤時,爲什麼要打擾那個for循環?不會memcpy更有意義? –

回答

2

如果你是說list->at(0)回報NULL然後將鼠標指針pEndNULL

因此,這樣做*pEnd是解除引用一個NULL指針,這將顯然seg錯誤。

如果你想要這樣做,你可以在解除引用之前檢查指針。例如:

if(pEnd == NULL) 
    //Do nothing or throw error or something 
else 
    //Go ahead and do your stuff 
+0

問題是它去了else部分,然後給我一個seg故障! –