掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
スタックオーバーフローなのでスタックサイズを変更したい (ID:51717)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>Eightyさん /F 3000000でやっても変化なしだったので大きすぎるのでやってみました(前の発言では言葉が足りなかったですね、すみません)。 MSDNなどで調べると、これを変更するのは最終手段のようなので、まずは構造を見直そうと思いました(にしても3TBとしてもcompileは通ってしまうものなのですね・・・もしくは全くStackSizeが変更できてないのか)。 ためしにどんな絵になるか描くプログラムで、何度も走らせるものではないから効率を無視してでっかい配列を扱っていたのですが、関数内でそのようなでかい変数用のメモリを確保するとstack領域に収まらずあのような事態になるようです。なので関数外(外部)で次のようなクラスを定義し、 class Cood{ public: int dat[N][N]; Cood(){for(int i=0;i<N;i++)for(int j=0;j<N;j++)dat[i][j]=0;}}; 関数内で、 Cood *al=new Cood; と動的?に確保?して 値が必要なときは (*al).dat[i][j]とし、 もう必要なくなったときに delete al;としたらうまく行きました。 (N=2300としても上手く行きました!) とりあえずは(私のしたかったことは)解決しました(どうも有難う御座いました)。がスタックサイズの変更は、、、できてないのでしょうか?? (なので"解決"としていいものやら…)。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.