none
堆栈溢出能自由分配空间大小吗? RRS feed

  • 问题

  • double* ak = stackalloc double[1024*128*64]//提示堆栈溢出
    为了提高性能使用unsafe代码,提示堆栈溢出,能进行配置吗?
    2012年10月9日 2:58

答案

  • 对于 x86 和 x64 计算机,默认堆栈大小为 1 MB。 在 Itanium 芯片组上,默认大小为 4 MB。

    http://msdn.microsoft.com/zh-cn/library/8cxs58a6.aspx


    http://feiyun0112.cnblogs.com/

    • 已标记为答案 MaJiXiang 2012年10月10日 4:45
    2012年10月9日 3:21
    版主
  • 不可以配置。

    但你可以在创建线程时指定最大栈尺寸,比如:

    var newthread = new Thread(() =>
    {
         unsafe
         {
              double* ak = stackalloc double[1024 * 128 * 64];
         }
    }, 104857600);
    newthread.Start();

    另外,有一个工具可以通过修改PE头设置栈大小,
    editbin /stack:<stacksize> file.exe


    Deadly Chorus


    2012年10月10日 1:59

全部回复