多阵列动态内存分配错误

时间:2019-01-20 12:47:11

标签: c++ arrays pointers visual-c++

请告知以下原因为何不起作用。使用VC2017

long **l;
l = new long [5][7];

它显示错误为:

  

“类型为“ long * [7]”的值不能分配为   长**” ...

我该如何解决?

1 个答案:

答案 0 :(得分:1)

您需要声明并初始化指向long*的指针的第一个数组,然后将其分配给每个数组:

long** l = new long*[5]; // declare array of pointer of 5 cell
for(int i = 0; i < 5; ++i)
    l[i] = new long[7]; // assign to each cell array with 7 cells

请记住,使用new分配的所有内容都是在堆上创建的,必须通过delete进行取消分配。