下記の関数ですが、入ったとたん
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;
>下記の関数ですが、入ったとたん STACK OVERFLOWでハング。
>何が悪いのでしょうか?
どういう環境で作成し、実行した結果なのか何も書いていないので
これだとは言いかねるのですが、きっと
double x[32768],y[32768];
double so[32768],co[32768],q;
でしょう
標準でスタックは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);
といった風に,ヒープから取得する方がいいでしょう。
#つーかそんなにメモリがいるのか,考え直す方がよいかと。
マルチポストはやめませう。
というか、「冷やかし?」