0

これを使用する場合:

int** newData = new int*[100];

100個のオブジェクト(ポインター)の配列を取得し、それらに対してデフォルトのコンストラクターが呼び出されると、ポインターがNULL.

これがコードの重要な部分であり、配列の無効化を回避したい場合、適切な方法で回避できますか? (使用せずにmalloc)

4

2 に答える 2

3

これは、実装の品質の問題です。ポインタは、示したコードで初期化されることが保証されていません。より高いパフォーマンスが保証されているC++のポインターの配列を動的に割り当てる他の方法はありません。

(ポインターにはコンストラクターがありません。ポインターは初期化されるか、初期化されないままになります。)

于 2012-07-28T15:30:13.477 に答える
1

あなたのケースでは呼び出しは行われませconstructorん。得られるのは、100個のポインターの配列であり、たまたまゼロで埋められているか、コンパイラーがそのためのコードを配置しています。new言語標準では、が呼び出されたときにこの配列を初期化する必要はありません。

さて、あなたの他の質問に:これが - の場合、プログラムの初期化時に必要な配列をcritical part of code単に事前に割り当てないのはなぜですか? このようにして、ポインターを事前定義された値に設定するランダムなコードについて心配する必要はありません。

于 2012-07-28T15:37:22.507 に答える