请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

release与debug

老师,这里的代码使用release运行会提示读取位置时发生访问冲突,这是为什么?换成debug就没事,平常运行·代码时,这两个应该怎么选呢62cfcd1900014fbf08670333.jpg

正在回答 回答被采纳积分+3

1回答

liuyubobobo 2022-07-14 16:47:47

试验一下把 getline 从 assert 中拿掉,应该能解决你的问题。因为在 release 模式中,assert 被直接忽略了,所以在 release 中,getline 根本没有执行。


刨除 debug 模式下才能 debug(比如单步跟踪)这个区别,release 和 debug 最大的区别是对代码的优化。release 模式下编译器将对代码做更多优化(比如忽略掉 assert)。


确实,更标准的写法,不应该把核心逻辑放到 assert 中。比如这里的 assert(getline),应该写成:

if(!getline) throw

即,如果 getline 出错,抛出异常。


继续加油!:)


0 回复 有任何疑惑可以回复我~
  • 提问者 肇秋_Echo #1
    可以了,不过在其他地方的assert会继续报这个错误,我还是直接选debug运行吧,这部分知识后续再学,谢谢老师
    回复 有任何疑惑可以回复我~ 2022-07-14 17:10:40
  • liuyubobobo 回复 提问者 肇秋_Echo #2
    point 是你想要运行的代码,不能放在 assert 中。你可能需要检查一遍所有的 assert 中的逻辑。
    回复 有任何疑惑可以回复我~ 2022-07-14 17:17:49
  • 提问者 肇秋_Echo 回复 liuyubobobo #3
    好的,谢谢老师
    回复 有任何疑惑可以回复我~ 2022-07-14 17:20:22
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信