関数に入ったとたんSTACK OCVERFLOW – プログラミング – Home

関数に入ったとたんSTACK OCVE...
 
通知
すべてクリア

関数に入ったとたんSTACK OCVERFLOW


pppp
 pppp
(@pppp)
ゲスト
結合: 22年前
投稿: 3
Topic starter  

下記の関数ですが、入ったとたん
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;


引用解決済
トピックタグ
島
 島
(@島)
ゲスト
結合: 23年前
投稿: 238
 

>下記の関数ですが、入ったとたん STACK OVERFLOWでハング。
>何が悪いのでしょうか?

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

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

でしょう


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 24年前
投稿: 252
 

標準でスタックは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
 jabnue
(@jabnue)
ゲスト
結合: 22年前
投稿: 1
 

 マルチポストはやめませう。
 というか、「冷やかし?」


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました