release与debug
来源:7-4 图的算法框架
肇秋_Echo
2022-07-14
老师,这里的代码使用release运行会提示读取位置时发生访问冲突,这是为什么?换成debug就没事,平常运行·代码时,这两个应该怎么选呢
写回答
1回答
-
liuyubobobo
2022-07-14
试验一下把 getline 从 assert 中拿掉,应该能解决你的问题。因为在 release 模式中,assert 被直接忽略了,所以在 release 中,getline 根本没有执行。
刨除 debug 模式下才能 debug(比如单步跟踪)这个区别,release 和 debug 最大的区别是对代码的优化。release 模式下编译器将对代码做更多优化(比如忽略掉 assert)。
确实,更标准的写法,不应该把核心逻辑放到 assert 中。比如这里的 assert(getline),应该写成:
if(!getline) throw
即,如果 getline 出错,抛出异常。
继续加油!:)
032022-07-14
相似问题