gpt4 book ai didi

c# - 如何使用c#中的程序检查堆栈内存的大小

转载 作者:行者123 更新时间:2023-12-05 07:15:11 28 4
gpt4 key购买 nike

我试过很多方法但是有办法找到什么时候发生堆栈溢出但是没有程序确定堆栈的实际限制

最佳答案

你是对的;确实没有很好的方法来确定这一点。但是:如果您使用的堆栈足够多,那么可能已经出现了严重错误

有两种常见的堆栈溢出场景:

  • 递归,通常可以用非递归循环代替,有时涉及 Stack<T>Queue<T>作为占位符(假设它不是无缘无故的错误无限递归 - 一个非常常见的错误)
  • 超大的本地人,特别是过度使用stackalloc对于非平凡的有效载荷(后者通常可以用 ArrayPool<T> 租约代替,也许在检查非平凡的有效载荷大小之后)

关于后者,已经围绕概念性 API 进行了讨论,“给我某种跨度,但让运行时决定是使用 stackalloc 还是租约或独立数组,基于关于堆栈中剩余空间的大小和数量”,但是:迄今为止尚未实现。

此外,请注意,使用大量堆栈空间的代价可能比您想象的要高;尽管可能会分配一个大堆栈,但这是虚拟 内存,在首次使用之前不一定需要实际 内存;所以:计划使用大量堆栈空间可能会强制堆栈区域的实际内存分配,然后永远无法回收。

所以再次总结一下:不,确实没有好的方法,但是如果您想要,您可能做错了什么。

关于c# - 如何使用c#中的程序检查堆栈内存的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59663310/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com