ポインタの配列の初期化に問題がありました。私はGCCのC++(4.6.0)でコンパイルを発見することである:C++ポインタ配列の初期化ヘルプ
MyClass** a = new MyClass*[100];
は常にポインタの配列をinitalizeません。
MyClass** a = new MyClass*[100]();
(それは私に私を混同してはnullポインタの配列を与えなかったほとんどの時間)が0(NULLポインタ)に、アレイ内のすべてのポインタを初期化しません。
私が書いているコードは、Windows/Linux/Mac/BSDプラットフォーム間で移植可能であることを意図しています。これはgcc C++コンパイラの特別な機能ですか?それとも標準的なC++ですか?標準のどこにそう言いますか?
は、おそらくあなたは、 ')(' MyClassの** A =新しいMyClassの* [100]を意味します。はい、 '新しい'初期化子は標準的な機能です。私はちょうど重複した質問を探しています。 –
なぜそうではないのですか(理由は間違っています)理由を尋ねるので、それほど重複しません:http://stackoverflow.com/questions/6717246/no-array-allocated-using-new-can-have-an-initializer ..しかし、十分に近い。投票を終了する。 –
最初のバージョンでは初期化されていないメモリが返されますが、これは以前は使用されていなかった場合はもちろんNULL *になります。ほとんどのOSは、セキュリティ上の理由から、プロセスに割り当てられたメモリをクリアします。 –