Tag: 堆栈

.NET中的stack.ToList() – 元素的顺序?

在Stack上使用.ToList()扩展方法时,结果与弹出每个元素并添加到新列表(推送的内容相反)相同吗? 如果是这样,这是因为它实际上是迭代每个元素,还是内部反向存储元素并将数组滑入新的List ?

在Visual Studio 2010中调用堆栈时间机器

我知道标题有点雄心勃勃,但我想知道是否有办法,在调试C#程序时在调用堆栈窗口(Visual Studio 2010)中显示以前的状态,重新启动(就像点击“继续”/ F5)从那里开始。 这对于调试生成exception的lambda表达式特别有用,因为无法向外移动。 对于真正的OO代码时间机器,所有对象的历史状态都需要存储在内存中,所以我怀疑它在这个阶段是否可行。 现在,如果所有对象的状态没有太大变化,那么我们可以保持当前状态并及时跳回(作为使用“编辑并继续”执行相同操作的快捷方式)。

堆栈和堆在c锐利

可能重复: 当类存储在堆(.NET)上时,为什么结构存储在堆栈中? 任何人都可以告诉我如何分配内存以确定哪个对象存储在堆栈中以及哪些对象存储在内存的堆部分中?

Stack 构造函数在从其他堆栈初始化时是否反转堆栈?

这是代码: var s = new Stack(); s.Push(1); s.Push(2); s.Push(3); s.Push(4); var ns = new Stack(s); var nss = new Stack(new Stack(s)); 然后让我们看看结果 tbLog.Text += “s stack:”; while(s.Count > 0) { tbLog.Text += s.Pop() + “,”; } tbLog.Text += Environment.NewLine; tbLog.Text += “ns stack:”; while (ns.Count > 0) { tbLog.Text += ns.Pop() + “,”; } tbLog.Text […]

耗尽ValueType堆栈空间

我的理解是.Net中的每个新线程分配1MB的堆栈空间 。 进一步我的理解是值类型存储在堆栈而不是堆… 所以我的问题是这个; 这种行为是否意味着任何ValueType变量声明限制为1MB的存储空间? 你在当前范围内声明的ValueTypes越多,callstack就越有效,并且在某些时候这意味着声明(为了参数)〜260,000 int会使用你所有的堆栈空间?

你能在C#中获得堆栈上的变量列表吗?

所有,只是想知道在.NET / C#中是否可以获得堆栈中的变量列表及其值? 我正在为我的应用程序创建一个exception处理程序,除了标准的堆栈跟踪之外,我还想查看堆栈中任何变量的名称和值。 不知道是否可以这样做?

C# – 垃圾收集

好的,所以我理解堆栈和堆(堆栈上的值,堆上的引用)。 当我声明一个类的新实例时,它会存在于堆上,并在堆栈的内存中引用此点。 我也知道C#是自己的垃圾收集(即它确定何时不再使用实例化的类并回收内存)。 我有两个问题: 我对垃圾收集的理解是否正确? 我可以自己做吗? 如果是这样,我自己这样做有什么好处,或者我应该离开它。 我问,因为我在For循环中有一个方法。 每次循环时,我都会创建一个新类的实例。 在我的脑海中,我想象所有这些类在堆里面,除了占用记忆之外什么都不做,我想尽可能快地摆脱它们以保持干净整洁! 我是正确地理解这个还是我错过了什么?

如何在堆栈上分配数组以获得性能提升?

一些最佳版本的函数,如popcount和count consecutive zeros使用表查找来获得最终答案。 在C和C ++中,可以在堆栈上分配数组并快速访问它们。 有没有办法在C#中做到这一点? 据我所知, stackalloc只能在函数中使用,因此数组不会持久存在。 我有一个小的查找表,我希望能够尽快访问,因此更愿意在堆栈而不是堆上分配它。

C#检查表达式是否为括号有效

表达方式: “(a [i] + { – 1} *(8-9))” 应该返回true,因为写这样的语法是有效的。 每个左支架在正确的位置都有一个靠近的位置,所有支架都处于合法位置。 我尝试通过一个堆栈来做这个,我知道我错在哪里,但我想知道解决这个问题的相关方法。 谢谢! 我可怜的错误代码: string expression = “( a[i]+{-1}*(8-9) ) “; Stack expStack = new Stack(); List rightBracketsHolder = new List(); for (int i = 0; i < expression.Length; i++) { if (expression[i] == '{') { expStack.Push('}'); Console.Write("}" + " "); } else if (expression[i] == […]

.NET – 函数变量存储在地址空间中的堆或堆栈上?

我在考试中遇到了以下问题: 当程序调用一个函数时,哪种类型的数据结构是为该函数中的变量分配的内存? 堆 队列 LIFO 堆 根据测试,虽然我选择了STACK,但HEAP是正确的答案。 有人可以在那里出色的人解释原因吗? 提前致谢。