Cpp程序在调试模式下正常,在常规模式就崩溃得情况
注意
本文最后更新于 2023-11-13,文中内容可能已过时。
笔者前几天在使用cpp(c++)写代码得时候, 发现一个很蛋疼得问题, 在使用lldb
进行调试得时候,程序完全正常,没有错误。 而退出调试模式, 使用命令行运行程序得时候, 则会触发内存错误。
经过一番查找之后发现, 笔者发现有些类得属性没有进行初始化。 。。
这可能是一个非常基础得错误。。 但是笔者一般写Java得时候 是不需要考虑这个问题得。。😂😂 😂
大致情况是这样得。
|
|
在调试模式下, 上述代码得属性部分 m_onHand
是一个nullptr
,这会产生预期的行为。
而非调试模式下,似乎就不是一个nullptr
, 则会产生不可预期得内存错误。 😢😢😢
笔者使用得解决办法就是在声明得时候这么写: Thing* m_onHand = nullptr;
除此之外, 笔者还搜索到了一种可能性。
下面是原文引用:
In 100% of the cases I’ve seen or heard of, where a C or C++ program runs fine in the debugger but fails when run outside, the cause has been writing past the end of a function local array. (The debugger puts more on the stack, so you’re less likely to overwrite something important.)