我有兴趣找出自动和动态分配的变量的内存限制是多少,所以我测试了如下内容:
int main() {
const int N = 1000000;
int a[N];
a[1] = 100;
}我发现不会导致分段错误的最大N是2,600,000,大约10MB。
然后我测试了动态分配的变量,如下所示:
int main() {
const int N = 1000000;
int* a = new int [N];
delete[] a;
}我发现不抛出异常的最大N大约是730,000,000,也就是大约3 3GB。
现在的问题是,如何确定10MB的限制(对于自动变量)和3 3GB的限制(对于动态分配的变量)。我想这和我的机器有关吧?另外,有没有办法提高限制,以防我真的需要它?
发布于 2011-11-04 12:00:52
自动变量的限制是分配给机器堆栈的内存量。10MB实际上相当高;1或2MB是更常见的默认值。
显然,3 3GB是操作系统的限制--它大致相当于操作系统允许一个程序占用的进程空间大小。它会因操作系统和硬件平台的不同而大不相同。
https://stackoverflow.com/questions/8004703
复制相似问题