C++でプログラムのスタック/ヒープに割り当てられた最大メモリを増やすにはどうすればよいですか?
コンピュータの RAM を増やすと、コンピュータ プログラムのスタック/ヒープ メモリが自動的に増えますか?
5 に答える
Second edit: I see from your comment that you work in Windows, so my Unix answer below would not be very helpful to you. But see Determining Stack Space with Visual Studio and C/C++ maximum stack size of program.
The stack size is quite often limited in Linux. The command ulimit -s will give the current value, in Kbytes. You can change the default in (usually) the file /etc/security/limits.conf.
You can also, depending on privileges, change it on a per-process basis using setrlimit()
. See for example my answer to Segmentation fault: Stack allocation in a C program in Ubuntu when bufffer>4M.
For heap, see e.g Heap size limitation in C. But I don't believe you can increase or decrease the maximum size.
プロセスのヒープ サイズは、通常、プロセスが割り当てることができる最大メモリによって制限されます。ヒープが連続している必要はない (malloc(1000000000) のようなことをしている場合を除く) ため、ヒープは使用可能なアドレス空間のほとんどを使用できます。
Windows では、最大プロセス サイズはいくつかの要因によって異なります。
32 ビット Windows を使用すると、32 ビット プロセスはデフォルトで 2 GB を割り当てることができます。Windows が /3GB スイッチを使用して起動され、プロセスが「Enable Large Addresses」リンカー フラグを使用してコンパイルされている場合、プロセスは 3 GB を割り当てることができます。
64 ビット Windows を使用すると、32 ビット プロセスはデフォルトで 2 GB を割り当てることができます。プロセスが「大きなアドレスを有効にする」とリンクされている場合、64 ビット Windows では 32 ビット プロセスに 4 GB を割り当てることができます。
64 ビット プロセス (64 ビット Windows 上) は、16,000 GB 程度を割り当てることができます。