Используя функцию GetCurrentThreadStackLimits
из kernel32.dll
, я могу получить размер стека 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 МБ.
Кажется, что размер стека больше, чем у 64-битной программы на C #.
Размер стека по умолчанию на C # составляет 1 МБ (32-битная)) и 4 МБ (64-разрядная), см. Каков размер стека потока BackgroundWorker DoWork?Есть ли способ изменить это?