C言語関係掲示板

過去ログ

No.1311 C/C++ではメモリはどれだけ利用可能か

[戻る] [ホームページ]
No.17620

メモリ領域
投稿者---samsara(2004/10/29 16:54:18)


C/C++でアプリケーションを作成する場合に、メモリはどれだけ利用する事が可能なのでしょうか?
1つのアプリケーションが利用できるメモリの上限は決まっているのでしょうか?
それとも、物理的なメモリとスワップ領域があれば、その分を1つのアプリケーションで
どんどん確保していけるものなのでしょうか?

つぎのような環境でプログラムを作成しています。
環境1:Windwos/C++Builder
環境2:Linux/GCC



No.17621

Re:メモリ領域
投稿者---επιστημη(2004/10/29 16:58:35)


>それとも、物理的なメモリとスワップ領域があれば、その分を1つのアプリケーションで
>どんどん確保していけるものなのでしょうか?

WindowsでもLinuxでも、取れるだけ取ってくれるはずです。



No.17623

Re:メモリ領域
投稿者---samsara(2004/10/29 17:21:03)


>>それとも、物理的なメモリとスワップ領域があれば、その分を1つのアプリケーションで
>>どんどん確保していけるものなのでしょうか?
>
>WindowsでもLinuxでも、取れるだけ取ってくれるはずです。

早速の返答ありがとうございます。
ってことは、もし全て使い果たしたら全てのアプリケーションでメモリが取得できなくなるのですね。

あと、スタック領域にもガンガン積んでよろしいのでしょうか?
スタック領域の上限はあるのでしょうか?



No.17628

Re:メモリ領域
投稿者---REE(2004/10/29 18:14:31)


>あと、スタック領域にもガンガン積んでよろしいのでしょうか?
>スタック領域の上限はあるのでしょうか?

上限はあります。
これはコンパイルオプションで設定出来るかもしれません。



No.17629

Re:メモリ領域
投稿者---Ban(2004/10/29 18:15:36)


>あと、スタック領域にもガンガン積んでよろしいのでしょうか?
>スタック領域の上限はあるのでしょうか?

Windows のスタックは、スレッド毎で上限があります。
これを超えると実行時に死にます。Linux も基本的には同様です。

例えば VC だとデフォルトでは1MBが確保されますし、
設定はたいていビルド時のオプション等で変更可能なはずです。


No.17630

Re:メモリ領域
投稿者---samsara(2004/10/29 18:33:20)


REE様、Ban様、ありがとうございます。



No.17622

Re:メモリ領域
投稿者---tetrapod(2004/10/29 17:20:38)


システム管理者の決めた制約以内でなら、と但し書きつきでしょうか。
Linux とかなら ulimit の範囲内でしか取れません。

Win32 の場合は OS そのものの制約により1プロセスが取得できるメモリは
2GB までに制約されます。

実メモリ量より多くのメモリを確保してしまうと、プログラムの組み方によっては
スラッシングを起こして実用にならないかもしれません。



No.17624

Re:メモリ領域
投稿者---samsara(2004/10/29 17:30:01)


>システム管理者の決めた制約以内でなら、と但し書きつきでしょうか。
>Linux とかなら ulimit の範囲内でしか取れません。
>Win32 の場合は OS そのものの制約により1プロセスが取得できるメモリは
>2GB までに制約されます。

どうもありがとうございます。OSによって決まるのですね。
アプリケーション作成時にコンパイルオプションとかで設定できるのかなぁと
思ってました。