0

可能重复:
类中未定义/未初始化的默认值

我有一个经常创建和销毁的 C++ 类。为了调试,我在类中添加了一个 bool mDebug,我想用#ifdef 打开它。但是,我发现即使未定义 ifdef 也会出现与调试变量相关的消息。当我在构造函数中转储该值时,我发现它具有随机值 - 35、68 等。所以我假设存在某种内存泄漏,并且该类正在分配已经在使用的内存。但是,我已经对其运行了 purify ,并且它没有显示此时未初始化的内存读取或任何超出范围的写入。valgrind 也没有太大帮助。由于各种原因,gdb 在这段代码上运行得不是很好。我可以转储变量的地址,但还有其他想法吗?

谢谢

4

1 回答 1

1

我假设您bool mDebug添加到类中的“”不是静态成员,因为它会(自动)初始化为零。因此,我认为它必须是“常规”数据成员。

这意味着您只是没有使用“基/成员初始化列表”或在构造函数主体中显式设置其初始值(您也可以将其包装在 中#ifdef,因为您的成员定义被包装在 中#ifdef)。

默认情况下,成员不设置为零(您必须明确地这样做)。除非发生了真正奇怪的事情,否则我怀疑这是内存泄漏/错误。

于 2011-05-26T17:01:09.347 回答