作者查詢 / poolongkong
作者 poolongkong 在 PTT [ C_and_CPP ] 看板的留言(推文), 共54則
限定看板:C_and_CPP
看板排序:
4F→: = 是 assign,== 才是判斷左右兩邊是否相等02/05 01:06
5F→: 說不定你同學以為你打錯,自動把 = 轉成 == 了 XD02/05 01:08
3F推: 把整個程式碼貼到網站再丟上來應該比較好幫忙 不然01/03 11:37
4F→: 我也滿疑惑為什麼要 tmp = p->pNext 理論上傳進來的01/03 11:37
5F→: p 應該是 head 吧 或是只能猜你的 p 是假的 head01/03 11:37
6F推: 為什麼第 29 行分配了記憶體可是不使用 反而在第 3001/03 13:35
7F→: 行又分配一次才使用01/03 13:35
8F→: 理論上資料會從第一個 node 開始存 不會從第二個 除01/03 13:37
9F→: 非你有什麼特殊的用途或理由01/03 13:37
10F推: 啊 忘記回文中的問題 你並沒有對 exp 做任何判斷 所01/03 13:48
11F→: 以當然做不到你要的事01/03 13:48
2F推: https://ideone.com/4r5xXd06/15 02:21
3F→: 其實這個寫法的概念就跟value vs. pointer是一樣的06/15 02:23
4F→: 如果想要保留變數在函式中的任何操作,可以透過傳遞06/15 02:25
5F→: 變數位址的方式06/15 02:25
6F→: 同理,如果想要保留一維指標在函式中的操作,可以透06/15 02:25
7F→: 過傳遞指標位址的方式06/15 02:27
7F推: https://ideone.com/Ie1PYR06/14 17:46
8F→: 你舉例的r跟c踩到邊界值了,所以我都減106/14 17:47
9F→: 如果是動態配置陣列,結果不會是上面那段code06/14 17:49
1F推: 94行的 “Node *” 宣告要拿掉06/05 17:13
2F推: 89行的dn跟94行的dn不是同一個06/05 17:18
3F→: 因為delete在93行 所以delete看到的dn 永遠都是89行06/05 17:20
4F→: 的dn06/05 17:20
5F推: 寫了一個超簡易的說明範例06/05 17:34
6F→: https://ideone.com/movZ9U06/05 17:34
9F推: 對的 而且我看編譯的錯誤訊息有說是double free06/05 17:41
10F→: 代表你對同一個address delete兩次了06/05 17:42
13F推: 邏輯對了 但執行上還是會有錯誤06/05 17:51
14F→: 在進入最後一次的loop iteration中 dn應該是最後一06/05 17:54
15F→: 個node 而ndn會是NULL 但是在delete之後 又會將他們06/05 17:54
16F→: 分別往後推一格 等於是說 dn等於NULL 而ndn等於NULL06/05 17:54
17F→: 的next 這邊就會有問題了06/05 17:54
23F→: 確認的話 應該是可以啦 但好像沒有很簡單的方法 可06/05 18:09
24F→: 能要等其他大神補充06/05 18:09
25F→: 或是你搜尋一下關於”找出memory leak”的文章06/05 18:10
27F→: 另外就是 目前這樣的寫法其實滿不好的 推薦你試試看06/05 18:15
28F→: 把目前的寫法改成List class的destructor06/05 18:15
29F→: 不客氣~ 我目前想到一個比較hardcode的確認方法 每06/05 18:17
30F→: 次new之後都印出address 每次delete之前也都印出add06/05 18:17
31F→: ress來比對看看 XD06/05 18:17
3F推: https://pastebin.com/5RnNWXrT 看看這樣能不能理解03/14 00:34
14F推: 如果有在職的工程師寫出這種code 大概是因為要離職12/27 21:05
15F→: 了12/27 21:05
5F推: 搭配樓上的例子,55.32在free之前是你程式需要的數12/27 10:55
6F→: 值,在free之後55.32就已經是所謂的記憶體殘值了12/27 10:55
7F→: 原來是55.342 打錯了抱歉... Orz12/27 10:56
8F推: *p++不是等於(*p)++嗎 還沒實際測試 純猜測討論12/14 10:32
4F推: 是 for 條件句的問題嗎07/02 21:01
5F→: 改成 a < 11 呢07/02 21:02
6F→: 如果記得沒錯的話 passcode[a] != 13 這樣子的意思是07/02 21:04