2013-11-24 34 views
0

我在eclipse ubuntu中有C++問題。我的代碼是:啓動字符數組c((SIGSEGV)(核心轉儲))

string Bi1 [N]; 
for(int j=1; j<=N;j++){ 
    char *cstr2 = new char[Bi2[j].length() + 1]; 
    strcpy(cstr2, Bi2[j].c_str()); 
    delete [] cstr2; 
} 

後程序崩潰:......(SIGSEGV)(核心轉儲)...

在windows的Visual Studio做工精細。

感謝您的回答。

+1

你的不幸的視覺工作室工作。當j == N時,Bi2 [j]可能無效,因此長度函數可以自由崩潰。 – RichardPlunkett

回答

4

在C++中的陣列開始在0和結束在N-1

for(int j=0; j<N;j++){ 

您可能需要進行類似的調整別處在代碼。

+1

+1假設'Bi2'和'Bi1'具有相似的索引(我假設他們這樣做,因此提前投票),我猜這個相同的問題在任何有'Bi2'*填充的地方被複制*。 – WhozCraig

+0

@WhozCraig說實話,我甚至沒有注意到他們是不同的數組。 – john

+1

Ssshhh你不應該這樣說。 = P – WhozCraig