您的位置:首页 > 其它

栈(stack)上申请内存大小限制问题

2016-10-19 23:24 239 查看
#include <iostream>

using namespace std;
long int count = 0;
void stack()
{
char msg[1024];  //加上static可以测试静态存储区的内存
cout<<"count="<<count++<<endl;
stack();
}

int main(void)
{
stack();
return 0;
}


上面程序输出的值大概就是栈能申请的最大内存,单位为k。

我们可以在终端用ulimit -a 察看stack内存的限制,得到结果为8192k(实际操作中不能申请到这么大的内存)

用malloc是在堆上申请内存,申请的内存可能不是连续的,所以可以申请很大内存。但stack申请的内存是连续的,所以一次不能申请太多。

int main()
{
//int stack[2097152]; //2097152*4=8192k(申请内存太大,出错)
int stack[2000000];  // 正确
stack[0]=1;

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: