Stackoverflow 与 Msys2
Stackoverfflow with Msys2
我在 Windows(我猜是 10)下,使用 Msys2 进行开发。我正在编写一个需要大数组的程序,但我不能使用动态内存。问题是,这个数组太大,无法放入调用堆栈,从而产生计算器溢出。
我尝试使用 ulimit -s 100000
更改调用堆栈大小。但是我的程序仍然崩溃。当我使用相同的命令 ulimit -s
检查时,我已经达到了我设置的限制。但是当我用getrlimit
检查一个小程序时,我得到了默认值。
我在 this thread 中看到我们可以使用文件 msys.bat
更改一些 Msys2 配置值,但我找不到这个文件。
我的问题
如何更改 windows/Msys2 上的调用堆栈?
通过指针传递大数组
#include <stdio.h>
char large_array[100000000];
void myfunc (char *array, size_t size)
{
for (int i=0; i<size; i++)
//STUFF
}
int main()
{
myfunc(large_array, sizeof(large_array)/sizeof(large_array[0]));
return 0;
}
我在 Windows(我猜是 10)下,使用 Msys2 进行开发。我正在编写一个需要大数组的程序,但我不能使用动态内存。问题是,这个数组太大,无法放入调用堆栈,从而产生计算器溢出。
我尝试使用 ulimit -s 100000
更改调用堆栈大小。但是我的程序仍然崩溃。当我使用相同的命令 ulimit -s
检查时,我已经达到了我设置的限制。但是当我用getrlimit
检查一个小程序时,我得到了默认值。
我在 this thread 中看到我们可以使用文件 msys.bat
更改一些 Msys2 配置值,但我找不到这个文件。
我的问题
如何更改 windows/Msys2 上的调用堆栈?
通过指针传递大数组
#include <stdio.h>
char large_array[100000000];
void myfunc (char *array, size_t size)
{
for (int i=0; i<size; i++)
//STUFF
}
int main()
{
myfunc(large_array, sizeof(large_array)/sizeof(large_array[0]));
return 0;
}