PTT
Submit
Submit
选择语言
正體中文
简体中文
PTT
C_and_CPP
[问题] 变量无缘无故被赋予新的值
楼主:
qazStarStar
(我不是派大星)
2019-03-28 18:14:01
程式码在这
https://pastebin.com/vbsc7Pnv
我写了一个queue测试程式
DEBUG时遇到很奇怪的现象
https://imgur.com/a/Aaq69lo
https://imgur.com/a/taYNpXv
明明只是执行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