【问题标题】:Error when declaring local array [duplicate]声明本地数组时出错[重复]
【发布时间】:2014-12-03 12:04:33
【问题描述】:

这样的事情会引发错误:

using namespace std;


int main()
{
    int test[1000000] = {};
}

这样的事情不会:

using namespace std;

int test[1000000] = {};

int main()
{
}

这是为什么呢? 100 万个整数甚至不会占用太多内存。

【问题讨论】:

    标签: c++ arrays


    【解决方案1】:

    第一个在堆栈上分配空间。第二个在编译/链接时在数据段中分配空间。堆栈大小有限。

    【讨论】:

      【解决方案2】:

      堆栈不是动态的,但你也可以这样做

      int* arr = new int[1000000];
      

      但不要忘记删除它,因为这会在堆中声明数组,这是动态内存,通过从堆中删除它可以防止内存泄漏。

      例子:

      delete arr;
      

      这只是替代如何使用内存

      【讨论】:

      • 这完全不是问题。
      • @Deduplicator 我不同意。这样从堆而不是栈中分配数组,解决了OP的错误。
      • @DavidLively 这正是它不重要的原因。问题不是“我该如何解决”,而是“为什么会发生这种情况”。这根本没有解释了堆栈分配失败的原因。
      猜你喜欢
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 2018-05-14
      相关资源
      最近更新 更多