Я ищу способ портирования функциональности POSIX getrlimits / setrlimit в Windows.
Наше приложение иногда сталкивается с очень глубокой рекурсией, и достигается предел стека по умолчанию, что приводит к переполнению стека.
Чтобы не допустить этого, мы написали следующий фрагмент кода:
struct rlimit rl;
int error = getrlimit(RLIMIT_STACK, &rl);
if (!error)
{
rl.rlim_cur = rl.rlim_max;
error = setrlimit(RLIMIT_STACK, &rl);
}
По сути, мы устанавливаем здесь максимальное ограничение для стека.
Теперь я пытаюсь перенести этот код в Windows, используя minGW (кросс-компилирование для Windows в Linux)
Я искал, но не смог найти способ сделать это из кода.
Я обнаружил флаг компоновщика "--stack", который можно использовать как:
mingw32-g ++ -Wl, - stack, -o file.exe file.c
Но я не уверен, смогу ли я столкнуться с некоторыми проблемами с этим использованием в долгосрочной перспективе (например, установка предела стека для всего приложения против определенного фрагмента кода)
Что бы я предпочел болееЭто решение может быть одним из следующих:
- Независимый от платформы способ установки предела стека или
- Способ установки предела стека в Window из кода.