2014-09-01 55 views
-4
#include <iostream> 
using namespace std; 
int main(){ 
    char* ch; 
    const char *c1 = "this is a goog book\n thingking in c++"; 
    const char *c2 = "python good book vs cpp"; 
    for(int i=0;i<50;i++) 
    ch[i]=c1[i]; 

    for(int j=0;j<50;j++) 
    ch[50+j]=c2[j]; 


    char* p1=(&ch[0]); 
    cout << "p1=" << p1 << endl; 
} 

編譯代碼在Ubuntu 12.04,能編譯,但運行結果是「分段故障(核心轉儲)」爲什麼C++程序的運行結果爲「分割故障(核心轉儲)」

+0

爲'ch'分配一些內存。使用調試器會在那裏指出你。 – 2014-09-01 07:05:34

+0

軟件世界需要的技能#1:知道如何自己研究問題。 – 2014-09-01 07:06:24

+1

@JonathanReinhart將代碼粘貼到您的本地衆包調試服務 – 2014-09-01 07:08:46

回答

3

你沒有爲ch分配空間。你或許可以把它固定大小的數組:

char ch[128]; 

,或者你可以從堆中分配它:

char *ch = new char[128]; 

(不要忘了delete它時,已完成)。

0

你可能要連接兩個數組:

  1. 你沒有爲* CH分配空間。
  2. char *c1 = "Hello World";是已棄用的版本。如果你想連接兩個數組假設每個的大小爲50是不是一個好主意

    char c1[]="Hello World";

  3. :這應改爲使用。你可以用函數計算出它的尺寸:strlen(c1);宣佈下string.hcstring
  4. 目前已經可用的庫函數char * strcat (char * destination, const char * source);其拷貝級聯串入的第一個參數。 舉例來看this