2013-05-16 21 views
5

、5.3.4チャーとunsigned char型の配列について/ 10新しいchar []がメモリを整列させるというC++標準要件の背景は何ですか? C++ 03標準に従って

、new式の結果と割り当て関数によって返されたアドレスとの差がなければなりません作成される配列のサイズより大きくないオブジェクト型の中で最も厳格な整列要件(3.9)の整数倍。

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

この要件の目的は何ですか?私はちょうどoperator new()(またはoperator new[]())と呼ぶことができます。これは、正しく整列されたメモリを返し、正しい位置合わせされたメモリを持つことが保証されています。とにかくnew char[]operator new()[]と呼ばれるので、私はそれを自分で呼び出すことができます。

引用要件の目的は何ですか?なぜoperator new[]()に直接電話をかけてみませんか?

答えて

3

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

+0

C++の初期のバージョンでは、これらの他の方法でRAWメモリを割り当てることができましたか?これは下位互換性のためです。 – Barmar

+0

@Barmar私が知る限り、はい。少なくとも、 'new char []'は全ての初期コンパイラ(CFront、Zortech、g ++)で働いていました。それが保証されているかどうか、私は知らない。 –

+0

それは私が言っていることです。 '新しいchar []'はいつも働いていましたが、生のメモリを割り当てる他の方法は持っていないかもしれないので、これが最初のやり方でした。 – Barmar

関連する問題