スタックに残すとエラーが発生するため、ヒープに割り当てた巨大な配列があります。私の知る限り、これをヒープに送信できる方法は 2 つあります。
#1
int i;
int x=10000, int y=10000;
double** array=(double**)malloc(sizeof(double*)*x);
if (image) {
for (i=0; i<x; i++) {
array[i] =(double*)malloc(sizeof(double)*y);
}
}
#2
double *array[x][y]=(double*)malloc(sizeof(double)*x*y);
今、私はどの方法が優れているのだろうかと思っていましたか?#1は、ヒープ内の長さyのxブロックを要求していると思いますが、これらは隣り合っている必要はありません。#2は、ヒープ内のy * xのブロックを要求しています。#2はx * yの巨大なブロックを要求していますが、#1は接続する必要のないブロックを要求しています。それは分割される可能性があるため、#1は優れたものになります。ヒープが長さ x*y の巨大なストライプの取得を処理できなかったとすると、x 量の y ストライプのデータを処理できます。
まず、これは本当ですか?いずれかの方法について何か不足していますか? 私の議論は実際的でしょうか、それとも本当なら、ありそうなシナリオではありませんか? さらに優れた方法を手に入れましたか?
洞察をありがとう。