我看过其他一些线程,但似乎无法弄清楚如何删除2d数组。
这是初始化数组的方式。 num_items
和capacity
是预定变量:
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/