5

C++03 標準、5.3.4/10 に準拠

char および unsigned char の配列の場合、new-expression の結果と割り当て関数によって返されるアドレスとの差は、サイズが以下のオブジェクト型の最も厳しいアラインメント要件 (3.9) の整数倍でなければなりません。作成される配列のサイズ。

割り当て関数 ( operator new[]()) は、可能な型に合わせてメモリを割り当てるためにも必要です。したがって、引用された部分はnew char[sizeof(T)]、 type に対して適切に整列されたメモリを生成する必要があることを効果的に示していますT

この要件の目的は何ですか? 適切に整列されたメモリを返し、適切に整列されたメモリを持つことが保証されているoperator new()(または) を呼び出すことができます。operator new[]()とにかくnew char[]呼び出すoperator new()[]ので、自分で呼び出すことができます。

引用された要件の目的は何ですか? なぜoperator new[]()直接電話しないのですか?

4

1 に答える 1

3

operator new通常は直接呼び出すだけですが、標準の作成者はnew char[]生メモリを取得する手段としての使用も許可することにしました。したがって、アライメント要件。

于 2013-05-16T08:38:28.740 に答える