下面的代码演示了如何创建一个内存可能不连续的二维数组。首先分配“外层”数组,然后分别用malloc
语句为每一行分配。
int rows = 2;
int columns = 5;
int **matrix = (int **) malloc(rows * sizeof(int *));
for (int i = 0; i < rows; i++) {
matrix[i] = (int *) malloc(columns * sizeof(int));
}
因为分别用了malloc
,所以内存不一定是连续的,如图4-15所示。
实际的分配情况取决于堆管理器和堆的状态,也有可能是连续的。