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

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



上面程序输出的值大概就是栈能申请的最大内存,单位为k。
【栈(stack)上申请内存大小限制问题】我们可以在终端用ulimit -a 察看stack内存的限制,得到结果为8192k(实际操作中不能申请到这么大的内存)
用malloc是在堆上申请内存,申请的内存可能不是连续的,所以可以申请很大内存。但stack申请的内存是连续的,所以一次不能申请太多。

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




    推荐阅读