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

发布网友 发布时间:2022-04-21 23:12

我来回答

1个回答

热心网友 时间:2023-08-19 09:56

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等方式在堆区申请空间则不会段错误。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com