C言語では、メモリは5つのゾーンに分けることができ占有しました:
①コード領域(テキストセグメント):理解しやすいが、バイナリマシンコードの後にコンパイルされたコードを配置することです。
②ヒープ(ヒープ):動的なメモリ割り当てのために使用されます。プログラマが解放しない場合は、プログラマによって一般割り当てと解放は、プログラムの終了により、オペレーティングシステムを復元することが可能です。(実際には、のmalloc()関数は、メモリ領域を制御することができます)
③スタック領域(スタック):自動的にコンパイラおよび放出することによって、割り当てられたが、一般的にローカル変数、関数のパラメータを格納するために使用される(焦点は黒板をノック描きます!)。
④グローバル初期化データ領域/スタティックデータ領域(データ・セグメント):名前が示すように、グローバル変数や静的変数を格納する場所です。この領域は、プロセス全体で共有されています。
⑤未初期化データ領域(BSS):実行時に変更。それがグローバル変数またはローカル変数に基づいて値(初期化)を変更し、彼らが地域に入ります。それ以外の場合は、群衆をmadding BSS内に滞在していきます。(少し後、私たちはその存在と経験を証明するための実験を使用します。)
Windowsでは、許可された空間データ・セグメントは、コンピュータのメモリならば、残り8G、2次元配列のint型でも46340 * 46340のサイズに開くことができるされ、残りのメモリのサイズによって異なります。
宇宙スタックのみ2M!!すなわち* 1024年2 * 1024 = 2097152バイト、最大でもローカル変数空間が手放す524288 int型を!
しかし、私はローカルに行う方法の大規模な配列を開くようにしたいですか?非常に単純な、それはデータセグメントに入ります。
書式#include <iostreamの> 使用して 名前空間はstdを、 int型のmain() { 静的 int型 DIS [ 8000 ] [ 8000 ]。 // 代码 }
参考: https://blog.csdn.net/qq_21882325/article/details/65445810