PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 變數無緣無故被賦予新的值
作者:
qazStarStar
(我不是派大星)
2019-03-28 18:14:01
程式碼在這
https://pastebin.com/vbsc7Pnv
我寫了一個queue測試程式
DEBUG時遇到很奇怪的現象
明明只是執行queue[rear++]=input;這行指令
可是front的值竟然更動了
請問這是怎麼一回事
作者:
LPH66
(-6.2598534e+18f)
2019-03-28 18:16:00
你超界了, 你的 queue 只有五格但你推了八個數字進去說起來你都有寫 isFull 就拿來用啊啊, 我看到問題了: 當你 dequeue (del) 之後 front 就不是0
作者:
qazStarStar
(我不是派大星)
2019-03-28 18:18:00
我是故意讓他超界以測試isFull
作者:
LPH66
(-6.2598534e+18f)
2019-03-28 18:18:00
問題應該會發生在 26 行這個 add(1) 時那你就要考慮這個時候東西要存在哪裡, isFull 要怎麼改寫等總之結論還是超界
作者:
qazStarStar
(我不是派大星)
2019-03-28 18:34:00
好的 我等等改寫isFull()看看,那請問front為什麼會在我文中的位置被改值呢照理來說那行是動不到front的
作者:
ecniv
(艾克尼夫)
2019-03-28 18:49:00
19,20行調換順序試試? 猜是超界而複寫到queue後面的變數
作者:
ilikekotomi
(Young)
2019-03-28 23:29:00
找可以看記憶體位置的debugger看
作者:
sarafciel
(Cattuz)
2019-03-28 23:41:00
你覺得動不到那是你覺得 就好像你覺得可以超界存取陣列也沒事一樣 你可以試著在Java或C#之類的語言寫看看同樣邏輯的code,包準exception炸到你飛天XD
作者:
LPH66
(-6.2598534e+18f)
2019-03-29 08:51:00
會被改到的原因就是超界, 就只是它正好在你超界存取的位置
作者:
adrianshum
(Alien)
2019-03-29 10:52:00
去看看第二誡吧...
繼續閱讀
[問題] QT及OpenCV編譯問題
chuinzong
[問題] Call function return padding string
blackcity
[問題] C++使用 openMP 問題
huan0357
[問題] QMetaObject 問題
MOONY135
[問題] 詢問C/C++程式方面的問題
ericleeyusia
[問題] static lib 實作 singleton 觀念
dreamboat66
[問題] 結構中有陣列時複製的問題
icetofux
[問題] Linux QT 網路套件的使用(新手)
chuinzong
[問題] 缺少標頭檔pch.h
qxxrbull
[問題] 串鍊鏈結,新增節點函數問題
cyBochu
Links
booklink
Contact Us: admin [ a t ] ucptt.com