首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++在局部变量的内存上有上限吗?

C++在局部变量的内存上有上限吗?
EN

Stack Overflow用户
提问于 2018-03-10 17:18:34
回答 2查看 228关注 0票数 1

我有一个程序,需要启动一个带有unordered_map<int,int>条目的100M+。只要机器有足够大的内存,我们就可以根据需要声明一个局部变量吗?或者,即使机器有128 of这样的巨大内存,局部变量的大小也有一些(可调)上限?我知道unordered_maplarge内存开销。

我之所以关心这个问题,是因为我在运行JAVA程序时遇到了这样的问题。我知道JAVA有JVM,而C++不需要它。

我正在一台拥有128 8GB内存的Linux机器上开发代码,但是潜在的客户端可以在具有8GB内存的Linux机器上使用它。

代码看起来像:

代码语言:javascript
复制
int func() {
  unordered_map<int,int> mp;
  for (int i=0; i<INT_MAX; i++) mp[i] = i-1;
  return mp.size();
}

This文章讨论堆内存,但我在这里仍然有点困惑。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-03-10 19:00:37

根据我作为C++程序员的经验,您不能将本地数组声明成您想要的大小。局部变量存储在“调用堆栈”中。但是,在您使用STL时,应该没有问题,因为STL数据结构只存储在“调用堆栈”中的几个属性,数据结构的元素存储在堆中。

票数 1
EN

Stack Overflow用户

发布于 2018-03-10 17:32:30

c++可以使用操作系统愿意为单个进程提供的内存。对于32位进程,这不超过4GB,在64位进程上,它将是机器上可用内存和交换空间的总和(这是有限制的,但我不认为当前的机器会遇到它们)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49211854

复制
相关文章

相似问题

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