使用GetCurrentThreadStackLimits
来自kernel32.dll
I 的函数可以获得 MATLAB 的堆栈大小。
我在名为的 .NET 程序集中创建了以下辅助方法IntelMKL.dll
:
static class _kernel
{
[DllImport("kernel32.dll")]
internal static extern void GetCurrentThreadStackLimits(out uint lowLimit, out uint highLimit);
}
和
public static class MKL
{
public static uint GetStackSize()
{
uint low, high;
_kernel.GetCurrentThreadStackLimits(out low, out high);
return high - low;
}
}
我可以GetStackSize
使用以下代码从 MATLAB 调用:
NET.addAssembly('IntelMKL.dll')
IntelMKL.MKL.GetStackSize() % this return 67108864 Bytes which is 64 Mega Bytes
MATLAB 的堆栈大小为 64 MB。
似乎堆栈大小大于 64 位 C# 程序。
默认 C# 堆栈大小为 1 MB(32 位)和 4 MB(64 位),请参阅BackgroundWorker DoWork 线程的堆栈大小是多少?有没有办法改变它?