全站数据
8 4 2 0 5 8 1

救命,堆栈空间不足是什么错误

咸冰考研 | 简单学习,快乐成才!         
问题更新日期:2024-10-22 01:18:20

问题描述

救命,堆栈空间不足是什么错误,在线求解答
精选答案
最佳答案

1)程序中有两个这样的char数组,算下来,一个char是一个字节,两个2048*2048的数组便是8MB的空间。

2)而使用ulimit -a查看Linux系统中设置的栈空间大小stack size,8192(单位KB),即8MB,,也可用ulimit -s可以只看栈空间大小。可见栈空间已经不够用了,在调用该函数的时候,在栈空间中为该函数开辟空间,因为已经开辟不出这么大的空间了,于是段错误了,程序目前尚未进入该函数,因为在装载该函数的时候挂掉了。所以即使给该函数第一行加输出信息,也输出不了。

3)使用ulimit -s 10240修改栈大小为10M,重新运行程序,程序正常运行无段错误

4)由此可证,的确是系统栈空间大小太小导致程序段错误,当然如果改成new malloc等方式在堆区申请空间则不会段错误。