有人能告诉我C#中的堆栈容量是什么。
我正在尝试使用30,000个项目的数组形成3D网格闭合对象。
答案 0 :(得分:71)
.NET应用程序的默认堆栈大小为1 MB(对于32位ASP.NET应用程序,默认值为256 KB,对于64位ASP.NET应用程序,默认值为512 KB),但您可以更改它。对于应用程序,您可以通过修改可执行文件的PE头来更改默认大小。对于您创建的线程,您可以使用占用堆栈大小的构造函数重载。
但是正如Anton Tyjhyy在他的回答中指出的那样,数组是引用类型,因此位于堆上(即使数组碰巧拥有一堆值类型)。
答案 1 :(得分:53)
你的数组将存在于堆中,堆栈大小与你的情况无关。
答案 2 :(得分:29)
堆栈大小可配置且can be set in several different ways。
答案 3 :(得分:5)
要使用堆栈存储数组,必须使用带有指针的不安全代码和stackalloc来在堆栈上分配所需的内存空间。
答案 4 :(得分:5)
如果要检查当前.NET程序集的值,可以使用Visual Studio命令提示符附带的ILDASM
命令来执行此操作。启动该工具后,打开组件,然后转到View -> Headers
菜单。现在向下滚动到新打开的PE Optional Header (32 bit)
窗口中的Headers
部分。您将看到两个字段:
所述空间在操作系统的分页文件中保留 必要时,总是可以换掉堆栈。