相关疑难解决方法(0)

堆栈和堆的内容和位置是什么?

编程语言书籍解释了在堆栈上创建了值类型,并且在堆上创建了引用类型,而没有解释这两者是什么.我还没有看清楚这个问题.我理解堆栈是什么.但,

  • 它们在哪里和它们(物理上在真实计算机的记忆中)?
  • 它们在多大程度上受操作系统或语言运行时控制?
  • 它们的范围是什么?
  • 是什么决定了它们的大小?
  • 是什么让一个更快?

language-agnostic heap stack memory-management dynamic-memory-allocation

7847
推荐指数
27
解决办法
145万
查看次数

为什么16字节是C#中struct的推荐大小?

我阅读了Cwalina的书(关于.NET应用程序的开发和设计的建议).

他说,一个好的设计结构必须小于16个字节(出于性能目的).

这究竟是为什么?

而且(更重要的是)如果我在Windows 7 x64下Core i7运行我的.NET 3.5(很快将是.NET 4.0)64位应用程序(这是基于CPU/OS的限制),我可以拥有更高效率的结构吗?

只是再次强调 - 我需要尽可能高效的结构.我试着一直把它放在堆栈上.该应用程序是多线程的,并且以亚毫秒为间隔运行,结构的当前大小为64字节.

c# struct memory-management class-design

34
推荐指数
4
解决办法
8147
查看次数

为什么BitVector 32结构比BitArray更有效?

BitArray和BitVector 32结构有什么区别,BitVector 32结构比BitArray有什么优势?为什么BitVector 32结构比BitArray更有效?

提前致谢.

周杰伦...

c# collections bitvector

15
推荐指数
2
解决办法
2万
查看次数

新的总是在C++/C#/ Java中分配在堆上

无论使用C++或C#还是Java,我的理解始终是当我们使用new关键字创建对象时,它会在堆上分配内存.我认为new只需要引用类型(类),并且原始类型(int,bool,float等)永远不会使用new并且总是在堆栈上(除非它们是实例化的类的成员变量)与new).不过,我一直在阅读信息,这让我怀疑这个长期存在的假设,至少对于Java和C#.

例如,我刚注意到在C#中,new运算符可用于初始化值类型,请参见此处.这是规则的一个例外,该语言的辅助功能,如果是,那么还会有哪些其他例外?

有人可以澄清一下吗?

c# c++ java memory memory-management

13
推荐指数
3
解决办法
1万
查看次数

如何在堆栈上分配数组以提高性能?

一些最优化的函数版本,例如popcountcount consecutive zeros使用表查找来获得最终答案。

在 C 和 C++ 中,可以在堆栈上分配数组并快速访问它们。

有没有办法在 C# 中做到这一点?据我所知,stackalloc只能在函数内使用,因此数组不会持久化。

我有一个小的查找表,我希望能够尽快访问它,因此更愿意在堆栈而不是堆上分配它。

c# arrays performance heap-memory stack-memory

-3
推荐指数
1
解决办法
1796
查看次数