delete []如何“知道” C ++中操作数数组的大小

New运算符用于动态内存分配,这会将变量放在堆内存中。Delete []运算符用于从堆中释放该内存。New运算符将在主块中创建的元素的数量存储在其中,以便delete []可以通过使用该数字来取消分配该内存。

范例程式码

#include <iostream>
using namespace std;
int main() {
   int B = 4;
   int A = 5;
   int** a = new int*[B];
   for(int i = 0; i < B; ++i)
      a[i] = new int[A];
   for(int i = 0; i < B; ++i)
      for(int j = 0; j < A; ++j)
         a[i][j] = i;
   for(int i = 0; i < B; ++i)
      for(int j = 0; j < A; ++j)
         cout << a[i][j] << "\n";
   for(int i = 0; i < A; ++i)
      delete [] a[i];
      delete [] a;
   return 0;
}

输出结果

0
0
0
0
0
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3