#include<stdio.h>
int main(){
scanf("%d",&Testcase)
while(Testcase--){
int a[100000] = {0};
/* Other statements */
}
}
在上面的程序中,对于每个Testcase,程序都分配100000 * sizeof(int)字节的内存。但在codechef中,我们可以使用的最大内存大约为10 MB。那么,是否有减少内存使用的最佳方法?如何防止初始化数组时过度使用程序堆栈内存?
P.S.我曾尝试将其声明为全局变量。但问题是,在每个测试用例之后,旧的Testcase值会干扰新的Testcase值。
此外,我试过在每个Testcase之后使用for循环重新初始化值为0的整个数组。但这需要很长时间,超过了3秒的时间要求。
我试图解决的问题是http://www.codechef.com/MARCH13/problems/FIRESC
编辑:允许的总内存限制实际上是约10 MB
[动态分配](http://www.cplusplus.com/reference/cstdlib/malloc/)呢? – 2013-03-10 15:19:46
c中可能吗? – 2013-03-10 15:20:18
如果您可以使用的最大内存是64kB,那么无法分配100k整数!你的意思是“最大**栈**内存”吗? – 2013-03-10 15:20:30