![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
No.3ベストアンサー
- 回答日時:
2,000,000×2,000,000×4バイトで、約16TB(= 16,000GB)のメモリが必要になる計算です。
32ビットOSでは到底扱えませんし、64ビット版のWindowsでも現状では無理です (64ビット版Windowsの1プロセスあたりの仮想アドレス空間は8TBまで)。
計算のやり方を根本的に変えるしかありません。
No.2
- 回答日時:
>大きな2次元配列
どのくらいの大きさですか?
この回答への補足
実行環境
Windows Vista(32ビット)
メモリ 4GB
MinGW gcc
配列計算するプログラムです。プログラムは、省略します。
1 普通に配列を宣言すると「size of array 'buf' is too large」と表示して、コンパイルできない。
#define SIZE 2000000
float buf1[SIZE][SIZE];
float buf2[SIZE][SIZE];
int i;
int j;
省略
for(i=0;i<SIZE;i++) {
for(j=0;j<SIZE;j++) {
buf1[i][j] = buf1[i][j] * buf2[i][j];
}
}
2 また、mallocを使う方法は、以下です。
この方法は、コンパイルできますが、実行時に「メモリを確保できませんでした。」と表示します。
#define SIZE 2000000
float **buf1;
float **buf2;
int i;
int j;
省略
buf1 = (float**)malloc(sizeof(float*)*SIZE);
for(i=0;i<SIZE;i++) {
buf1[i] = (float*)malloc(sizeof(float)*SIZE);
if(buf1[i] == NULL) {
printf("メモリを確保できませんでした。\n");
}
}
buf2 = (float**)malloc(sizeof(float*));
for(i=0;i<SIZE;i++) {
buf2[i] = (float*)malloc(sizeof(float)*SIZE);
if(buf2[i] == NULL) {
printf("メモリを確保できませんでした。\n");
}
}
大きな2次元配列を確保する方法を教えてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# ポインタの型変換、どうやるんでしたっけ? 2 2022/03/28 11:00
- C言語・C++・C# c言語の問題です 課題1 (二分探索木とセット) 大きさ size の配列 array を考える。す 2 2023/01/10 21:08
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- Perl perlで2次元配列をサブルーチンに値渡しで渡す 5 2022/12/17 18:49
- C言語・C++・C# C言語の質問です。 以下の命令を実行するプログラムを作りました ①文字列aとbの長さを表示 ②aとb 1 2022/04/29 15:35
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/17 11:59
- その他(趣味・アウトドア・車) 24vソーラー発電で12vと24vのインバーターを使うと 3 2023/05/12 20:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
配列を使わずに、変数名を動的...
-
C言語 配列の長さの上限
-
C# 配列の変数宣言について。
-
配列で格納したものをmsgboxで...
-
テキストファイルから文字列を...
-
【速いブラインドタッチ】手を...
-
メモリの初期値
-
C言語 変換指定%sについてです。
-
2次元配列の、黒いマス目で囲...
-
Functionの戻り値を2次元配列...
-
C言語初心者 ポインタについて...
-
先頭アドレスとは何ですか?
-
9枚の写真がA4 1枚に印刷できま...
-
VB.NET 構造体の配列の検索機能...
-
配列をEraseしてもメモリが開放...
-
C言語で巨大配列を作るにはどう...
-
ExcelVBAで質問です。離れた二...
-
C言語で2次元配列の引数定義や...
-
unsigned char配列への入力の仕方
-
配列を含む構造体の初期値について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
先頭アドレスとは何ですか?
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
テキストファイルから文字列を...
-
配列の参照渡しで型が一致しま...
-
ExcelVBAで質問です。離れた二...
-
unsigned char配列への入力の仕方
-
VBで構造体の配列を関数に渡す...
-
C++ vectorに配列をプッシュしたい
-
C言語で特定列だけを抽出して配...
-
Excel、VBAのユーザーフォーム...
-
複数の選択範囲の行番号を個別...
-
配列をEraseしてもメモリが開放...
-
配列を含む構造体の初期値について
-
【速いブラインドタッチ】手を...
-
C言語 配列の再初期化
-
Redimした動的配列はEraseする...
おすすめ情報