c - 如何防止在初始化数组时过度使用程序堆栈内存?

标签 c memory memory-management memory-leaks

#include<stdio.h>    
int main(){
  scanf("%d",&Testcase)
  while(Testcase--){
  int a[100000] = {0};

  /* Other statements */

  }
}

在上面的程序中,对于每个 Testcase,程序分配 100000*sizeof(int) 字节的内存。但在 codechef 中,我们可以使用的最大内存约为 10 MB。那么,有什么优化的方法可以减少内存使用量吗?

附言我试过将其声明为全局变量。但这样做的问题是,在每个测试用例之后,旧的测试用例值会干扰新的测试用例值。

此外,我尝试在每个测试用例之后使用 for 循环将整个数组重新初始化为值 0。但这需要很长时间,超过了 3 秒的时间要求。

我要解决的问题是 http://www.codechef.com/MARCH13/problems/FIRESC

编辑:总允许内存限制实际上约为 10 MB

最佳答案

如果您将数组声明为全局变量,它将被分配到 .bss 部分,这同样不是最佳选择。如果您希望分配大部分内存,malloc 将是您在 heap 部分分配内存的首选方式。

关于c - 如何防止在初始化数组时过度使用程序堆栈内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15323802/

相关文章:

performance - 对于一般的移动 safari 和移动 webkit,使用复杂的 CSS 还是图像更好?

c - 使用 C 中的线程从命令行反转字符串 - 段错误

c - 如何在C中连接宏

c# - 如何增加分配的内存? {由于内存不足异常,函数评估被禁用。}

C++ 释放自定义类 vector 的正确方法

java - Java 中的数组大小

c - 数组中的最大值及其频率

c - 使用LZ4解压缩时如何知道输出缓冲区何时太小?

c# - 创建大量对象时内存不足C#

指针的C++ vector ,指针的 vector 声明和删除