[問題] Segmentation fault

看板C_and_CPP作者 (Howard)時間13年前 (2011/04/03 16:33), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串1/3 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) Linux(編譯器不知道) 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) no 問題(Question): 寫大數運算 目前只做到資料的input和output 尚未寫好運算 作業要求將所有運算時需要的function都放在class裡 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): Segmentation fault 程式碼(Code):(請善用置底文網頁, 記得排版) #include <iostream> #include <cstdlib> #include <cstring> using namespace std; class BigNum { public: //constructor BigNum() { cur_ptr=new char[100]; in_ptr=new char[100]; } //add void Add(const char* ch) { } //functional void set(const char* ch) { if(strlen(ch)>100) { delete cur_ptr; cur_ptr=new char[2*strlen(ch)]; cur_ptr=strcpy(cur_ptr,ch); } else { strcpy(cur_ptr,ch); } } void set() { delete cur_ptr; char setZero[]={'0'}; cur_ptr=setZero; } char* show() { return cur_ptr; } //destructor ~BigNum() { delete cur_ptr; delete in_ptr; } private: char *cur_ptr,*in_ptr; int *a_ptr,*b_ptr,*c_ptr; }; int main(void) { BigNum X; X.set("96325874123654"); cout << X.show() << endl; X.set(); cout << X.show() << endl; return 0; } 補充說明(Supplement): 用codeblocks編譯會過 但用linux的編譯器卻出現Segmentation fault 請問到底哪裡出了問題?? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.92.21

04/03 16:36, , 1F
在 void set(),改成 delete cur_ptr; cur_ptr = NULL;
04/03 16:36, 1F
文章代碼(AID): #1Dc33gOM (C_and_CPP)
文章代碼(AID): #1Dc33gOM (C_and_CPP)