我的程序在release版本有一些问题通过不了测试, 因此我打算按照讨论中之前提到的把CMakelists中的release改成了Debug之后居然通过了测试, 这是什么情况呢
我也不知道
找到问题了 但是仍然有疑惑 就是我的代码是这样的 我有一个指针a 我的语句是 if (a->a1 == 1 || !a) 那么在a为空的情况下在a->a1那里就会出问题 但是我在CMakelist是debug的情况下测试能过 是什么情况呢
参考 https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html 文档和 build/CMakeCache.txt 里的宏,Debug 模式下没有开编译优化,Release 模式下开了 -O2 优化,生成的汇编不一样,而空指针解引用在C语言里是未定义行为。