0

gccへの初期化されていないポインタをどうにかして初期化できますNULLか?

職場では、 gcc 4.1.2Sun Studio 12の両方でソフトウェアを構築しています。Red Hat Enterprise Linux で実行される gcc バージョンは、数か月間、週 5 日、正常に実行されています。

ただし、Solaris バージョンをロールアウトしたばかりで、起動時に毎日クラッシュします。

スタック トレースにより、次のようなコードが表示されます。

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

そして、_timerどこにも初期化されていないことを確認しました。したがって_timer、 をガベージ データに設定する必要があると考えられます。これは との比較に失敗し、タイマーが構築されることなく 'ed にNULLなります。StartTimer

仕事は実際に私の同僚に割り当てられており、彼はこれを検証しています。しかし、その間、私は興味がありました: Linux (gcc) ビルドがクラッシュしなかったのはなぜですか? 同じコードであることは保証できます。Perforce と厳密なラベル付けを使用しています。コンパイラは初期化されていないポインタを初期化しないと読んだので、混乱しています。

初期化されていないポインターをgcc 4.1.2絶対に自動初期化できないことを確認すると、この質問に答えることができます。または、そうかもしれません。

4

0 に答える 0