プログラムで大きなサイズの配列が必要です。
私のコードには 3 つの float 型変数を含む構造があり、この構造の大きなサイズの 3 次元配列が必要です。
私のコードは小さなサイズの配列の出力を提供していますが、配列のサイズを大きくすると、スタック オーバーフローの例外/エラーが発生します。
助けてください。
プログラムで大きなサイズの配列が必要です。
私のコードには 3 つの float 型変数を含む構造があり、この構造の大きなサイズの 3 次元配列が必要です。
私のコードは小さなサイズの配列の出力を提供していますが、配列のサイズを大きくすると、スタック オーバーフローの例外/エラーが発生します。
助けてください。
それ以外の
int main() {
float array[N][N][N][N][N];
...
書きます
float array[N][N][N][N][N];
int main() {
...
または、次のように記述します。
int main() {
static float array[N][N][N][N][N];
...
ところで: VC10/Win32 での私の既定の設定では、最大 990 KB のスタック割り当てが可能N=12
です。
よろしく
rbo
ここでのソリューションは ですstd::vector
。スタックよりもはるかに大きいヒープにメモリを割り当て、余分な労力をまったくかけずにサイズを変更できます。
typedef std::vector<float> vec;
typedef std::vector<vec> vec2D;
typedef std::vector<vec2D> vec3D;
typedef std::vector<vec3D> vec4D;
typedef std::vector<vec4D> vec5D;
vec5D d (15, vec4D (15, vec3D (15, vec2D (15, vec (15)))));
//use as you would a normal array for the most part
もちろん、(コメントで「必要」と述べられているように) 5D 配列を持つことは、特に必要なものではありません。Matrix
代わりに、基礎となる 1D ベクトルを持つ種類のクラスを作成することをお勧めします。
さらに良いことに、デザインを再考してください。そのような非常に多次元の配列が実際に必要になることはめったにありません。
必要かどうかはわかりませんが、必要に応じて、リンカーオプションを使用してデフォルトのスタックサイズを変更できます。たとえば、VisualStudioで[プロパティ]-[構成プロパティ]-[リンカー]-[システム]-[スタック予約サイズ]に移動します。