gcc可以将未初始化的指针初始化为NULL吗?或者什么可以解释这种行为?

时间:2017-04-11 18:21:41

标签: c++ pointers gcc initialization sunstudio

可以gcc以某种方式将未初始化的指针初始化为NULL吗?

在工作中,我们在 gcc 4.1.2 以及 Sun Studio 12 上构建我们的软件。在Red Hat Enterprise Linux上运行的gcc版本已经运行良好,每周5天运行几个月。

我们刚刚推出了我们的Solaris版本,它每天都在启动时崩溃。

堆栈跟踪将我们带到这样的代码:

if( _timer == NULL ) {
    _timer = new Timer(bunch, of, parameters);
}
_timer->StartTimer(_timeout);

我们已将_timer标识为未在任何地方初始化。因此,我们认为必须将_timer设置为垃圾数据,这与NULL无法比较,然后在没有构建计时器的情况下获取StartTimer

这项工作实际上是分配给我的同事,他正在验证这一点。但同时,我很好奇:为什么我们的Linux(gcc)构建崩溃,不是吗?我可以向你保证,它是相同的代码 - 我们使用Perforce和严格的标签。我读到编译器没有初始化未初始化的指针,所以我很困惑。

确认gcc 4.1.2绝对无法自动初始化未初始化的指针,将回答此问题。或者,它可能的方式。

0 个答案:

没有答案
相关问题