我看过其他一些线程,但似乎无法弄清楚如何删除2d数组。

这是初始化数组的方式。 num_itemscapacity是预定变量:

int **P = new int *[num_items];
for (x = 0; x <= num_items; x++)
     P[x] = new int[capacity];


这是我原本想删除的方式,但是它崩溃了:

for(x = 0; x <= num_items; x++)
    delete [] P[x];
delete [] P;


为了明确起见,我希望数组P保留1个额外的num_items。因此,如果num_items = 7,则我希望数组大小为8,以便P [7]有效。

最佳答案

您的注释“不需要将+1添加到num_items”,并且您的for循环实现彼此矛盾。

请记住,数组是基于0的,所以P的有效索引为0,但不包括num_items。但是,在您的for循环中,x的取值为0,最高为num_items(包括num_items)。

因此,修复很可能

for (x = 0; x < num_items; x++)
    /* whatever */


所有这些,您可以使用std::vector实例代替吗?然后,您不必担心这种内存管理。

关于c++ - 初始化和删除二维数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19898250/

10-09 02:15
查看更多