无法将整数分配给动态分配的2D阵列

时间:2012-10-08 22:11:13

标签: c++ c

我已经按照以下方式创建了一个2D数组:

int** map_array = (int**)malloc(sizeof(yy_value*xx_value));

当我尝试在某个位置分配值时:

map_array[y*xx_value+x] = 5;

我收到以下错误:

Assigning to 'int *' from incompatible type 'int'

我在这里做错了什么?

2 个答案:

答案 0 :(得分:4)

变化:

int** map_array = (int**)malloc(sizeof(yy_value*xx_value));

为:

int* map_array = (int*)malloc(yy_value*xx_value*sizeof(map_array[0]));

说明:你在这里分配一个“扁平”的二维数组,你可以在这里计算你自己的一维索引,而不是一个实际的二维数组。传递给malloc的大小也是错误的。

请注意,如果没有充分的理由,您可能不应该在C ++程序中使用malloc。

答案 1 :(得分:1)

您也可以使用2D数组:

int **map_array = (int**)malloc(xx_value*sizeof(int*))
for (i = 0; i < xx_value; i++) {
    map_array[i] = (int*)malloc(yy_value*sizeof(int))
}

并使用以下方式访问元素:

map_array[x][y] = 5;