可以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
绝对无法自动初始化未初始化的指针,将回答此问题。或者,它可能的方式。