将数组放入结构体中

问题描述 投票:0回答:1

我有一个结构,但我的变量是全局的,如下所示:

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...

但是当我运行代码时它给了我运行时错误:

c++ arrays struct local-variables
1个回答
0
投票

错误

0xC00000FD
STATUS_STACK_OVERFLOW
。您在调用堆栈上放置了太多数据。
1e6
是 106 即 1000000。所以每个数组的大小是
sizeof(int) * 1000000
字节,你有 3 个。这意味着当数组位于结构体内部并且该结构体在堆栈上声明时,您将占用 11MB 内存(假设是 4 字节 int)。大多数堆栈默认只能容纳 1-4MB。

© www.soinside.com 2019 - 2024. All rights reserved.