[問題] 變數無緣無故被賦予新的值

看板C_and_CPP作者 (我不是派大星)時間5年前 (2019/03/28 18:14), 5年前編輯推噓2(2015)
留言17則, 6人參與, 5年前最新討論串1/1
程式碼在這 https://pastebin.com/vbsc7Pnv 我寫了一個queue測試程式 DEBUG時遇到很奇怪的現象 https://imgur.com/a/Aaq69lo https://imgur.com/a/taYNpXv 明明只是執行queue[rear++]=input;這行指令 可是front的值竟然更動了 請問這是怎麼一回事 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 125.227.6.197 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1553768050.A.F4A.html

03/28 18:16, 5年前 , 1F
你超界了, 你的 queue 只有五格但你推了八個數字進去
03/28 18:16, 1F

03/28 18:16, 5年前 , 2F
說起來你都有寫 isFull 就拿來用啊
03/28 18:16, 2F

03/28 18:18, 5年前 , 3F
啊, 我看到問題了: 當你 dequeue (del) 之後 front 就不是0
03/28 18:18, 3F

03/28 18:18, 5年前 , 4F
我是故意讓他超界以測試isFull
03/28 18:18, 4F

03/28 18:18, 5年前 , 5F
問題應該會發生在 26 行這個 add(1) 時
03/28 18:18, 5F

03/28 18:19, 5年前 , 6F
那你就要考慮這個時候東西要存在哪裡, isFull 要怎麼改寫等
03/28 18:19, 6F

03/28 18:20, 5年前 , 7F
總之結論還是超界
03/28 18:20, 7F

03/28 18:34, 5年前 , 8F
好的 我等等改寫isFull()看看,那請問front為什麼會
03/28 18:34, 8F

03/28 18:34, 5年前 , 9F
在我文中的位置被改值呢
03/28 18:34, 9F

03/28 18:35, 5年前 , 10F
照理來說那行是動不到front的
03/28 18:35, 10F

03/28 18:49, 5年前 , 11F
19,20行調換順序試試? 猜是超界而複寫到queue後面的變數
03/28 18:49, 11F

03/28 23:29, 5年前 , 12F
找可以看記憶體位置的debugger看
03/28 23:29, 12F

03/28 23:41, 5年前 , 13F
你覺得動不到那是你覺得 就好像你覺得可以超界存取陣列
03/28 23:41, 13F

03/28 23:42, 5年前 , 14F
也沒事一樣 你可以試著在Java或C#之類的語言寫看看同樣
03/28 23:42, 14F

03/28 23:43, 5年前 , 15F
邏輯的code,包準exception炸到你飛天XD
03/28 23:43, 15F
謝謝各位 我接下來也有方向可以找資料了 話說我這個現象有沒有專門關鍵字可以咕狗呢 ※ 編輯: qazStarStar (115.82.244.220), 03/29/2019 00:54:40

03/29 08:51, 5年前 , 16F
會被改到的原因就是超界, 就只是它正好在你超界存取的位置
03/29 08:51, 16F

03/29 10:52, 5年前 , 17F
去看看第二誡吧...
03/29 10:52, 17F
終於搞定了 感謝大家 ※ 編輯: qazStarStar (101.12.172.4), 03/29/2019 20:52:30
文章代碼(AID): #1Sd9vozA (C_and_CPP)