Tag: 堆栈

在回收价值类型统一是否有一点

我发现文章说回收和重用变量是团结的好习惯。 所以我采纳了它。 但有一点不清楚:这是否适用于值类型变量(整数,向量)? 有没有一点我使用这个: int x; Vector3 v; void functionCalledVeryOften(){ x=SomeCalculation(); v=SomeCalc(); //do something with x and v } 而不是这个: void functionCalledVeryOften(){ int x=SomeCalculation(); Vector3 v=SomeCalc(); //do something with x and v }

“运行时检查失败#0 – 从C ++代码成功进行C#回调后,ESP的值未在函数调用中正确保存”

我正在制作一个使用GameSpy C代码的C#应用​​程序(GP部分)。 C代码成功地调用了一个回调(它是C#代码),但是我得到了这个错误Run-Time Check Failure #0 – The value of ESP was not properly saved across a function call在回调完成后Run-Time Check Failure #0 – The value of ESP was not properly saved across a function call 。 我用C代码制作了一个DLL,如下所示: // GPCallback ///////////// __declspec(dllexport) typedef void (* GPCallback)( GPConnection * connection, void * arg, void * param ); […]

我可以限制通用堆栈的深度吗?

是否有内置的方法来限制System.Collection.Generics.Stack的深度? 因此,如果您处于最大容量,推送新元素将删除堆栈的底部? 我知道我可以通过转换为数组并重建堆栈来实现它,但我想可能已经有了一个方法。 编辑:我写了一个扩展方法: public static void Trim (this Stack stack, int trimCount) { if (stack.Count <= trimCount) return; stack = new Stack ( stack .ToArray() .Take(trimCount) ); } 因此,它在修剪时返回一个新的堆栈,但不是不可变的function方式=) 这样做的原因是我在堆栈中存储应用程序的撤消步骤,我只想存储有限数量的步骤。

c#堆栈队列组合

在C#中有一些已定义的通用容器,它可以同时用作Stack和Queue吗? 我只是希望能够将元素追加到末尾或队列的前面 谢谢

有没有办法在C#中检查运行时的堆栈变量?

有没有办法在运行时转储堆栈的内容? 我对父函数信息(名称,参数,行)感兴趣,我知道我可以使用StackTrace和StackFrame类。 但是,我还想获取堆栈中的变量(在调用当前执行的方法中声明的局部变量)。 由于Visual Studio调试器可以执行此操作,我认为可能有一种方法也可以在运行时在代码中执行此操作。 有这样的方式吗?

.NET中的堆栈与堆

在您的实际编程经验中,STACK和HEAP的这些知识如何在现实生活中拯救您? 来自战壕的故事? 或者这个概念是否适合填写编程书籍并有利于理论?

在C#中检查堆栈大小

有没有办法在C#中检查线程堆栈大小?

堆与堆栈分配的影响(.NET)

从关于堆和堆栈的SO回答 1中 ,它提出了一个问题:为什么知道变量的分配位置很重要? 在另一个答案,有人指出堆栈更快。 这是唯一的含义吗? 有人可以给出一个代码示例,其中简单的分配位置更改可以解决问题(例如,性能)? 请注意,此问题是特定于.NET的 1问题从SO中删除。

类的字段,它们是存储在堆栈还是堆中?

我昨天看到了一个问题(对我来说)另一个问题。 请查看以下代码: public class Class1 { int A; //as I uderstand, int is value type and therefore lives in the stack } class Class2 { Run() { Class1 instance1 = new Class1(); instance1.A = 10; //it points to value type, but isnt this reference (on heap)? } } 或者在创建Class1的实例时,它的字段类型也在堆上创建? 但后来我不明白什么时候它真的会在堆栈上,因为几乎总是你需要创建一个对象实例才能使用它。