我有一个分配给堆的巨大数组,因为如果留在堆栈上会导致错误。现在,据我所知,有两种方法可以将其发送到堆中。
#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);
现在我想知道哪种方法是superoir?我认为#1 是在堆中要求 x 个长度为 y 的块,它们不必彼此相邻。其中 #2 要求堆中的 y*x 块。#2 要求一个巨大的 x*y 块,而 #1 要求不需要连接的块。#1 也将是 superoir,因为它可以被拆分。假设堆无法处理长度为 x*y 的巨大条带,但可以处理 x 数量的 y 条数据条。
首先这是真的吗?我错过了任何一种方法吗?我的论点是否切实可行,或者如果属实,这不是一种可能的情况?有更高级的方法吗?
谢谢你的洞察力。