在 spoj 这样的在线编码平台上,我需要平衡栈和堆的使用吗?[已关闭]

问题描述 投票:0回答:1

我读到 spoj 问题的内存限制是 256 MB。我在这里以 spoj 为例。我想要一个更普遍的答案。假设,我在C++中动态分配了一个5000万个整数的数组,这将占用大约200 MB的堆空间。那么这是否意味着我最多可以在调用栈上分配56 MB的数据?假设我通过堆分配消耗了所有可用的内存。这是否意味着现在我甚至不能在堆栈上声明一个整数变量,即使我还没有将堆栈用于任何其他用途。是这样的吗,还是说栈和堆都有单独的内存限制并独立运行?

c++ stack-overflow heap-memory dynamic-memory-allocation competitive-coding
1个回答
0
投票

在linuxx86-32中,默认的堆栈限制是2 MB。所有现代操作系统都有类似的限制。

一般来说,你不应该在堆栈上创建大对象。除了本地变量,堆栈还用于函数的堆栈框架。每一个活动的函数调用都会占用一些堆栈上的内存。

AFAIK在竞争平台上,内存限制是针对程序本身的。

© www.soinside.com 2019 - 2024. All rights reserved.