C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了什么导致堆栈溢出?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您可能认为这是一个巧合,我的问题的主题类似于论坛的名称,但我实际上通过谷歌搜索“堆栈溢出”一词来到这里.

我使用OPNET网络模拟器,我使用C编程.我认为我遇到了大数组大小的问题.看来我正在达到某种内存分配限制.它可能与OPNET,Windows,我的笔记本电脑内存或最有可能的C语言有关.当我尝试使用具有数千个整数的元素总数的嵌套数组时,会导致该问题.我认为我超出了整体内存分配限制,我想知道是否有办法增加这个上限.
这是确切的问题描述:

我基本上有一个路由表.我们称之为routIng_tbl [n],这意味着我支持30个节点(路由器).现在,对于此表中的每个节点,我保留信息.大约有很多(数百个)可用路径,在一个名为paths [p]的数组中.同样,对于此数组中的每个路径,我将属于它的节点列表保存在名为hops [h]的数组中.所以,我至少使用了nph整数值的内存,但是这个表也包含其他信息.在同一个函数中,我也使用另一个嵌套数组,它也消耗了近40,000个整数.
一旦我运行我的模拟,它就会退出抱怨堆栈溢出.当我减少路由表的总大小时,它可以工作.
您认为导致问题的原因是什么?如何解决
非常感激
阿里

解决方法

如果您发布一些代码可能会有所帮助.编辑问题以包括问题功能错误.

同时,这是一个非常通用的答案:

堆栈溢出的两个主要原因是1)递归函数,或2)大量局部变量的分配.

递归

如果你的函数调用自己,就像这样:

int recurse(int number) {

    return (recurse(number));
}

由于局部变量和函数参数存储在堆栈中,因此它将填充堆栈并导致堆栈溢出.

大局部变量

如果您尝试分配大量的局部变量,那么您可以轻松地溢出堆栈.像这样的函数可能会导致问题:

void hugeStack (void) {

    unsigned long long reallyBig[100000000][1000000000];

    ...
}

这个similar question一个非常详细的答案.

大佬总结

以上是大佬教程为你收集整理的什么导致堆栈溢出?全部内容,希望文章能够帮你解决什么导致堆栈溢出?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。