関数に入ったとたんSTACK OCVERFLOW

[戻る]
pppp 2002/12/29(日) 19:11:58
下記の関数ですが、入ったとたん
STACK OVERFLOWでハング。
何が悪いのでしょうか?

下記が全容です。

typedef struct
{
    double  r;
    double  i;
}complex;

static  int     Samp[331010]; 
static  int     SampM[331010];

AAANoiseEli(HSamp,  SampM,  N); 

AAANoiseEli(complex d0[],  complex d1[],  int N)
{
    int    i,j;
    int    r;
    int    p;
    int    j1,j2;   
    int    k;
    int    k1;
    double a,b;
    double c,s;
    int    bit;
    double deg;
    double arg;

    double x[32768],y[32768];
       double so[32768],co[32768],q;
    int    flag;

2002/12/29(日) 22:17:22
>下記の関数ですが、入ったとたん STACK OVERFLOWでハング。
>何が悪いのでしょうか?

どういう環境で作成し、実行した結果なのか何も書いていないので
これだとは言いかねるのですが、きっと

    double x[32768],y[32768];
       double so[32768],co[32768],q;

でしょう

YuO [E-Mail] 2002/12/29(日) 22:23:00
標準でスタックは1MBしかないですからね……。

>     double x[32768],y[32768];
>     double so[32768],co[32768],q;
sizeof(double) * 32768 * 4 = 1048576 (= 1MB)ですから,当然,Stack Overflowが起こります。

/STACKリンカオプションを使うと一応スタックサイズ自体を変更できますが,それより前に,
std::vector<double> x(32768), y(32768), so(32768), co(32768);
といった風に,ヒープから取得する方がいいでしょう。
#つーかそんなにメモリがいるのか,考え直す方がよいかと。

jabnue 2002/12/31(火) 02:43:48
 マルチポストはやめませう。
 というか、「冷やかし?」

古いスレッドには追加発言できません。