首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中如何确定内存大小?

在C++中如何确定内存大小?
EN

Stack Overflow用户
提问于 2011-11-04 11:54:38
回答 3查看 142关注 0票数 2

我有兴趣找出自动和动态分配的变量的内存限制是多少,所以我测试了如下内容:

代码语言:javascript
运行
复制
int main() {
    const int N = 1000000;
    int a[N];
    a[1] = 100;
}

我发现不会导致分段错误的最大N是2,600,000,大约10MB。

然后我测试了动态分配的变量,如下所示:

代码语言:javascript
运行
复制
int main() {
    const int N = 1000000;
    int* a = new int [N];
    delete[] a;
}

我发现不抛出异常的最大N大约是730,000,000,也就是大约3 3GB。

现在的问题是,如何确定10MB的限制(对于自动变量)和3 3GB的限制(对于动态分配的变量)。我想这和我的机器有关吧?另外,有没有办法提高限制,以防我真的需要它?

EN

Stack Overflow用户

回答已采纳

发布于 2011-11-04 12:00:52

自动变量的限制是分配给机器堆栈的内存量。10MB实际上相当高;1或2MB是更常见的默认值。

显然,3 3GB是操作系统的限制--它大致相当于操作系统允许一个程序占用的进程空间大小。它会因操作系统和硬件平台的不同而大不相同。

票数 2
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8004703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档