我有一个结构,但我的变量是全局的,如下所示:
const int kol=1e6;
int par[kol];
int h[kol];
int aps[kol];
struct dsu
{
void add(int v)
{
par[v]=v;
aps[v]=v;
}// and more...
}
之后,我想要两个 dsu 树,但问题是它们使用相同的源(par[kol] 和 aps[kol] 对于它们来说是相同的),所以我需要将这些数组设为本地数组,如下所示:
struct dsu
{
int par[kol];
int h[kol];
int aps[kol];
void add(int v)
{
par[v]=v;
aps[v]=v;
}
}// and more...
但是当我运行代码时它给了我运行时错误:
错误
0xC00000FD
是STATUS_STACK_OVERFLOW
。您在调用堆栈上放置了太多数据。 1e6
是 106 即 1000000。所以每个数组的大小是 sizeof(int) * 1000000
字节,你有 3 个。这意味着当数组位于结构体内部并且该结构体在堆栈上声明时,您将占用 11MB 内存(假设是 4 字节 int)。大多数堆栈默认只能容纳 1-4MB。