以下のプログラムを書いたんですが
データ数が多いせいかSystem.StackOverflowException'のハンドルされていない例外
となってしまいます。  解決方法を教えてください。 お願いします。
/*畳み込み和を求めるプログラム*/
#include <stdio.h>
#define FMAX 1000000   /*関数f(τ)のデータ数  「100万個」  */
#define GMAX 1000000
main()
{
int f[FMAX]; /*関数f(τ)*/
int g[GMAX]; /*関数g(τ)*/
int sum[FMAX+GMAX-1] = {0}; /*畳み込みの結果を入れる変数*/
int i,t;

/*関数f,gの初期値の代入(全て1)*/
for (i=0;i<FMAX;i++ )
f[i]=1;
for (i=0;i<GMAX;i++ )
g[i]=1;

/*畳み込み和の計算*/
for (t=0; t< FMAX+GMAX-1; t++){
for( i=0 ; i<GMAX; i++){
if ( t-i >= 0 && t-i < FMAX)
sum[t] += f[t-i]*g[i];
}
}

/*計算結果の表示*/
for (t=0 ; t<FMAX+GMAX-1; t++)
printf("%d,",sum[t]);
}