2016-09-07 8 views
1

​​に含まれる要素の数には制限がありますかC
PS:配列を宣言する際にいくつかの領域制限があると思っていましたが、インターネットでそのような参照を見つけることができませんでした。2次元整数配列内の要素の最大数

+1

配列は 'SIZE_MAX'バイトを超えることはできません(この定数は' limits.h'で定義されています)。特定のシステムでは、使用可能なメモリ量に応じて制限値が小さくなることがあります。 –

+0

可能な複製http://stackoverflow.com/questions/216259/is-there-a-max-array-length-limit-in-c –

+1

@RishikeshRajeこれはC++の質問 –

答えて

1

あなたのRAMまたは利用可能なメモリによって異なります。

i:e:グローバルな配列a[100000][10000]を宣言したときに私のプログラムがクラッシュしていましたが、この宣言はシステムには問題ありません。

+2

これは実際には当てはまりません。たとえば、32ビットWindowsでは、コンピュータにそれ以上のRAMがあっても4,29Gb以上を割り当てることはできませんでした。とにかく、Cは 'size_t'型を提供します。これは、あるオブジェクトにどれくらいのメモリを割り当てることができるかを調べる方法です。 – Lundin

+0

@ Lundin:私の誤解を解消してくれてありがとう。私は今それを得たと思う。 – jbsu32

-1

size_tタイプは、配列を含むプログラム内のオブジェクトのサイズを格納するのに十分な大きさに定義されています。したがって、可能な限り大きな配列サイズは2^(8*sizeof(size_t)バイトと記述することができます。

便宜上、この値はlimits.hの定数SIZE_MAXによって取得できます。少なくとも65535であることが保証されていますが、32ビットシステムでは2^32、64ビットシステムでは2^64という現実的に大きな値です。

-1

C/C++標準の最大値:x * y * z <= SIZE_MAX(SIZE_MAXは実装定義済み、xは配列の1次元、yはその他の次元)、zはバイト単位の要素のサイズです。例えばelement_t A[x][y],z = sizeof(element_t)

関連する問題