【问题标题】:stack overflow after increasing stack reserve增加堆栈保留后堆栈溢出
【发布时间】:2011-11-20 18:28:49
【问题描述】:

我有一个任务,我需要用 C 中分配的数组来填充主内存。我正在使用 VS2010 并不断收到堆栈溢出错误。将堆栈保留增加到默认的 1 MB 以上会有所帮助,但是现在我正在使用的数组大小甚至更大,而且似乎无论我增加多少保留,它现在都会不断地给我一个堆栈溢出错误。 任何帮助,将不胜感激。 -谢谢

【问题讨论】:

  • +1 用于询问堆栈溢出时的堆栈溢出
  • 看了这个问题的标题后,我一度认为这是一个递归问题! :P
  • “用分配的数组填满主内存”到底是什么意思?如果您需要自己进行分配,下面的 malloc 答案是正确的方向,但我想也许任务要求一些奇怪的东西......

标签: c visual-studio-2010 stack stack-overflow


【解决方案1】:

您可能正在堆栈上分配数组。这就是堆栈溢出的原因,因为堆栈永远不会像整个主内存一样大。

您需要使用malloc() 在堆上创建数组。这将允许你用完所有的主内存。

换句话说,你不能这样做:

int array[1000000];

那肯定会炸掉你的筹码。你需要这样做:

int *array = malloc(1000000 * sizeof(int));

你最终需要像这样释放它:

free(array);

否则你会得到一个memory leak

【讨论】:

  • @Mystical 别忘了提到释放内存!
  • 是的,这也很重要。已添加。
猜你喜欢
  • 2013-11-15
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 2021-03-17
  • 1970-01-01
  • 2012-04-15
  • 2012-12-20
相关资源
最近更新 更多