release与debug

来源:7-4 图的算法框架

肇秋_Echo

2022-07-14

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

1回答

liuyubobobo

2022-07-14

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


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


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

if(!getline) throw

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


继续加油!:)


0
3
肇秋_Echo
回复
liuyubobobo
好的,谢谢老师
2022-07-14
共3条回复

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11186 学习 · 1614 问题

查看课程