- C言語なら俺に聞け(入門編)Part 127©2ch.net
972 :デフォルトの名無しさん[]:2015/05/26(火) 17:40:11.45 ID:PNafWbTb - >>968
分割したのは関係ない。 float test[10][44100]でもたぶん無理。 動的確保かどうかだろう。
|
- C言語なら俺に聞け(入門編)Part 127©2ch.net
978 :デフォルトの名無しさん[]:2015/05/26(火) 18:31:37.06 ID:PNafWbTb - float test[441000];がダメで、
float * test = new float[441000];だと出来るのは、 C言語が管理するメモリ領域を使い切るかの差だろう。 後者だと、C言語が管理するメモリ領域の使用量は4か8バイト程度で、前者だと4*441000バイト程度だろう。 スタックオーバーフローってのになるんだろ。 コンパイルオプションで回避できるかもしれないが、動的確保したほうが安全。
|
- C言語なら俺に聞け(入門編)Part 127©2ch.net
979 :デフォルトの名無しさん[]:2015/05/26(火) 18:34:12.33 ID:PNafWbTb - スタックオーバーフロー - Wikipedia
スタックオーバーフローの一番の原因は再帰による無限ループである。 次によくある原因としては、スタック上に巨大な配列を確保しようとすることである。 コールスタックに格納できる情報量には上限があるため、巨大な局所変数はコールスタックに格納するのではなくヒープ領域などを明示的に利用すべきである。 さらに他の原因として、関数呼び出しの階層数が深すぎる場合などがある。 スタックオーバーフローの原因となりうるコーディング技法は比較的限定されており、市販ソフトウェアでこれが発生した場合はそのソフトハウスの開発能力が極めて低い事を自白するようなものである。
|
- C言語なら俺に聞け(入門編)Part 127©2ch.net
981 :デフォルトの名無しさん[]:2015/05/26(火) 18:52:40.85 ID:PNafWbTb - C言語編 - メモリスタック
http://www.g-ishihara.com/c_mm_01.htm 2.4 スタックとスタックサイズ (Oracle Solaris Studio 12.2: OpenMP API ユーザーガイド) https://docs.oracle.com/cd/E19205-01/821-2493/aewcf/index.html /F (スタック サイズの設定) Visual Studio 2013 https://msdn.microsoft.com/ja-jp/library/tdkhxaks.aspx
|