我在C ++中有一个经常创建和销毁的类。为了调试,我在类中添加了一个bool mDebug,我想用#ifdef打开它。但是,我发现即使未定义ifdef,也会出现与调试变量关联的消息。当我将值转储到构造函数中时,我发现它具有随机值--35,68等。所以我假设存在某种内存泄漏,并且正在为类分配已经在使用的内存。但是,我已经对它进行了净化,并且它没有在该点显示未初始化的内存读取或任何超出范围的写入。 valgrind也没有太大的帮助。由于各种原因,gdb在此代码上运行不佳。我可以转储变量的地址,但是还有其他想法吗?
由于
答案 0 :(得分:1)
我假设你的“bool mDebug
”添加到该类而不是一个静态成员,因为它会(自动)初始化为零。所以,我认为它必须是“常规”数据成员。
这意味着您只是没有使用“基础/成员初始化列表”设置其初始值,或者在构造函数体中显式设置(其中任何一个都将包装在#ifdef
中,因为您的成员定义已包装在#ifdef
)。
默认情况下,成员不会设置为零(您必须明确地这样做)。除非发生一些非常奇怪的事情,否则我怀疑是内存泄漏/错误。