#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