c++堆栈溢出问题?

c++堆栈溢出问题?,第1张

这个代码导致堆栈溢出的语句是:

BYTE lpAll2[1000 * 1000],共100万字节

你可以用new 分配,这样堆栈里只放一个指针,不会有溢出的问纤薯题

BYTE *lpAll2 = new BYTE[1000 * 1000]

另外,反思一下是否真的需要这漏基么大的返竖谨数组,感觉上是可以优化的。

不可以。原因有以下几点:

1、因为堆栈溢出意味着堆内存已耗尽,如果只是简单地用on error resume next语句忽略并继续向下执行,轻则程序运行会出现异常,重则会导致系统奔溃。

2、出现堆栈溢出,往往是因为对函数的递归调用不合理或使用递归算法不合适(应考虑使用其它算法替代)造成的,这属于编程上的逻辑错误,正确的做法应该是修改代码,排除逻辑错误。如果只是简单地忽含橘略它,等同于主动为应用程序留下了一个可供别人攻击的堆栈溢出漏洞。

3、即便腊颤暂时无法修复代码,也应该以对话框或其它形式通知程序使用轮老败者发生了什么事情,由程序使用者来决定怎样处理,而不是简单地忽略它。

微信蔽乎小程序出现堆栈溢出归根结底是参数和参数条件判断的错误导致递归函数一直循环递归调用。根据公开信息显示归根结底是参数和乎迟参数条件判断的错误导致递归函数一直循环递归调用,无法停止,从而只宏顷悉有在超出浏览器最大堆栈量(内存溢出)时,浏览器抛出错误才能停止。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12414508.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存