[問題] 程式碼從 Linux 移植到 Win 7 上

看板C_and_CPP (C/C++)作者時間13年前 (2013/04/12 05:00), 編輯推噓2(209)
留言11則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) GCC + Linux 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 原本用 Linux 開發的程式 移植到 Win 7 + Orwell Dev-C++ 就是不能跑 相同的 Compiler 會因為作業系統不同跑不起來嗎??? 餵入的資料(Input): 30 20 10 40 50 60 5 20 90 4 2 (開檔讀檔) 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): Segmentation fault 的樣子??? 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.135.24.88

04/12 06:28, , 1F
new Node 以後 left 跟 right 沒給值。
04/12 06:28, 1F

04/12 06:30, , 2F
可以改成 new Node() 或是自己把 left right 歸零
04/12 06:30, 2F

04/12 08:25, , 3F
這不會是 avl tree 吧?真用功, 5 點就起來寫程式
04/12 08:25, 3F
真的如 linotwo 大大講的 完全是指標出始化的問題 先把程式碼刪掉 因為這是作業 話說為什麼在 Linux 裡 node* head = new node; 可以跑 但是 Windows 非得要 node* head = new node(); head->next = NULL; 指標自己先出始化才可以跑??? ※ 編輯: iWRZ 來自: 140.135.24.88 (04/12 11:44)

04/12 11:53, , 4F
這樣說得通嗎? 要看程式才知道吧
04/12 11:53, 4F

04/12 12:06, , 5F
因為有些系統會將未初始化的記憶體填入 magic number
04/12 12:06, 5F

04/12 12:06, , 6F
ctor 沒做 init 的話,沒道理 new 的時候會 init 吧
04/12 12:06, 6F

04/12 12:07, , 7F
04/12 12:07, 7F

04/12 12:07, , 8F
幫助你不要把未初始化的記憶體內的值拿來用
04/12 12:07, 8F

04/12 12:10, , 9F
需要初始化的不是指標,而是指標所指的物件所佔的空間。
04/12 12:10, 9F

04/12 12:25, , 10F
就算是這樣也得 access 那塊記憶體才會有問題
04/12 12:25, 10F

04/12 12:26, , 11F
如果都要用到 next 了卻沒有初始化 這樣錯誤不是很明顯嗎
04/12 12:26, 11F
文章代碼(AID): #1HPoI64E (C_and_CPP)
文章代碼(AID): #1HPoI64E (C_and_CPP)