c语言数组放在main函数里面和外面的区别

c语言数组放在main函数里面和外面的区别最近 a 算法题的时候碰到一道题 一个数列前三项都为 1 之后每项的值等于前三项之和 求第项的最后 4 位数字 一开始写的代码如下 结果一直爆 Terminated due to signal SEGMENTATION FAULT 11 这个错误 改了好久没改出来

大家好,我是讯享网,很高兴认识大家。

最近a算法题的时候碰到一道题:一个数列前三项都为1,之后每项的值等于前三项之和,求第项的最后4位数字。一开始写的代码如下:

结果一直爆 Terminated due to signal: SEGMENTATION FAULT (11) 这个错误,改了好久没改出来。之后在stackoverflow上提问才找到自己错误所在。

这里先介绍一下栈区(stack),堆区(heap),数据区(data seg)和代码区。

栈区:由操作系统自动分配释放,存放函数的参数值,局部变量的值;当不需要时系统会自动清除。

堆区:由new分配的内存块,不由编译器管,由应用程序控制(相当于程序员控制)。如果程序员没有释放掉,程序结束后,操作系统会自动回收。

数据区:也称全局区或者静态区,存放全局的东西类似全局变量。

代码区:存放执行代码的地方,类似if else,while,for这种语句。

原来在main函数里面的数组是开在栈区(stack),在函数外面的是开在数据区的。栈区的内存比较小,所以当数组非常大的时候,就会报错。假如把数组放在数据区就不会出现这个问题,因为数据区的内存很大。

修改后的代码如下:

小讯
上一篇 2025-02-21 20:10
下一篇 2025-03-02 07:59

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/45211.html