[問題] C++ 物件和指標的問題

看板C_and_CPP作者 (samio)時間13年前 (2011/03/31 18:49), 編輯推噓2(204)
留言6則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) linux g++ 問題(Question): 很不好意思連續po文問問題...orz 但是我自己找了好久都找不到問題在哪裡 懇請版上大大們不要見怪@@ 我碰到的問題是: class的member function回傳另一個物件的陣列 (mcArray::move() 回傳 mcWalker*) 逐行執行的時候發現... 在member function裡面存的陣列還是正確的 但是回傳到main之後就少了第一個元素!! 最奇怪的是,當回傳陣列長度比10大的時候 回傳是正確的資料 但是當回傳陣列比10小的時候就出問題了 我反覆找了好久始終找不到錯誤到底在哪裡 我猜是我指標的語法有問題 不然就是malloc和free的時候出了問題 三個classes分別是: randDist, mcWalker, mcArray randDist 建立任意數 mcWalker 是random walker的物件,包含每個walker相關的資料和功能 (像是位能、座標等等的) mcArray 是mcWalker的陣列,用到malloc還有其他關於系統的函數 餵入的資料(Input): 在 main 中定義walker數量 numW 還有要把walker動幾次的數量 STEP 預期的正確結果(Expected Output): 回傳member function造出的mcWalker陣列 錯誤結果(Wrong Output): 回傳陣列的第一個元素不見了 程式碼(Code):(請善用置底文網頁, 記得排版) main.cpp: http://paste.plurk.com/show/411766/ randDist.cpp: http://paste.plurk.com/show/411769/ randDist.h: http://paste.plurk.com/show/411775/ mcWalkers.cpp: http://paste.plurk.com/show/411770/ mcWalkers.h: http://paste.plurk.com/show/411774/ mcArray.cpp:http://paste.plurk.com/show/411771/ mcArray.h: http://paste.plurk.com/show/411772/ 補充說明(Supplement): 不好意思原始碼很亂... 但是我也不知道跟怎麼整理 也希望版上大大給我些建議 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.234.211

03/31 18:53, , 1F
在 c++ 裡面不要用 malloc 他不會呼叫 ctor ...
03/31 18:53, 1F

03/31 19:02, , 2F
謝謝回覆!改了之後還在抓蟲中orz...
03/31 19:02, 2F

03/31 19:16, , 3F
把 malloc(N*sizeof(A)) 改成 new A[N] 還是一樣的蟲@@
03/31 19:16, 3F

03/31 19:17, , 4F
用new
03/31 19:17, 4F

04/02 16:44, , 5F
用new跟malloc應該是一樣的 new還是一樣是malloc做出來的吧
04/02 16:44, 5F

04/02 16:56, , 6F
樓上 ... malloc 不會呼叫建構子,光這點就差很多好嗎
04/02 16:56, 6F
文章代碼(AID): #1Db5n44A (C_and_CPP)