これを使用する場合:
int** newData = new int*[100];
100個のオブジェクト(ポインター)の配列を取得し、それらに対してデフォルトのコンストラクターが呼び出されると、ポインターがNULL
.
これがコードの重要な部分であり、配列の無効化を回避したい場合、適切な方法で回避できますか? (使用せずにmalloc
)
これを使用する場合:
int** newData = new int*[100];
100個のオブジェクト(ポインター)の配列を取得し、それらに対してデフォルトのコンストラクターが呼び出されると、ポインターがNULL
.
これがコードの重要な部分であり、配列の無効化を回避したい場合、適切な方法で回避できますか? (使用せずにmalloc
)
これは、実装の品質の問題です。ポインタは、示したコードで初期化されることが保証されていません。より高いパフォーマンスが保証されているC++のポインターの配列を動的に割り当てる他の方法はありません。
(ポインターにはコンストラクターがありません。ポインターは初期化されるか、初期化されないままになります。)
あなたのケースでは呼び出しは行われませconstructor
ん。得られるのは、100個のポインターの配列であり、たまたまゼロで埋められているか、コンパイラーがそのためのコードを配置しています。new
言語標準では、が呼び出されたときにこの配列を初期化する必要はありません。
さて、あなたの他の質問に:これが - の場合、プログラムの初期化時に必要な配列をcritical part of code
単に事前に割り当てないのはなぜですか? このようにして、ポインターを事前定義された値に設定するランダムなコードについて心配する必要はありません。