编译器可以修改栈大小,这个值可以随意设置吗
1个回答
展开全部
你说的那个默认1M的栈,应该指的是call stack(函数调用使用的栈)。这个栈用来存放函数调用时所传递的参数(并非所有参数都通过栈传递),栈指针,return address,寄存器的备份,还有每层函数的local variable。
1M大多数情况都是够用的,如果用完可能会发生非法访问等错误。可能会用完1M的情况:某个被调用的函数申请了一个很大的local variable,比如直接在栈上开个大数组之类的;还有就是递归调用,递归层数多了后很容易就用完1M。所以递归一般不要乱用。
1M大多数情况都是够用的,如果用完可能会发生非法访问等错误。可能会用完1M的情况:某个被调用的函数申请了一个很大的local variable,比如直接在栈上开个大数组之类的;还有就是递归调用,递归层数多了后很容易就用完1M。所以递归一般不要乱用。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询