gpt4 book ai didi

c++ - 如何在 C++ 中确定内存量?

转载 作者:搜寻专家 更新时间:2023-10-31 00:19:32 25 4
gpt4 key购买 nike

我很想知道自动变量和动态分配变量的内存限制是多少,所以我测试了类似的东西:

int main() {
const int N = 1000000;
int a[N];
a[1] = 100;
}

我发现不会导致 Segmentation fault 的最大 N 是 2,600,000,大约 10MB。

然后我测试了动态分配的变量,像这样:

int main() {
const int N = 1000000;
int* a = new int [N];
delete[] a;
}

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

现在的问题是,10MB 的限制(对于自动变量)和 3GB 的限制(对于动态分配的变量)是如何确定的。我假设它与我的机器有关?另外,如果我真的需要它,有什么办法可以增加限制吗?

最佳答案

语言没有强制要求。这都是实现定义的。

自动变量通常进入堆栈,您通常可以通过编译器选项增加最大大小。免费存储通常是堆,并且仅受可用地址空间的限制。不要指望 32 位环境中超过 2-3GB,64 位环境中的限制会高得多。当然,您将无法分配所有 64 位地址空间,您将达到可用虚拟内存(RAM + 交换空间)的限制。

关于c++ - 如何在 C++ 中确定内存量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8004703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com