您的当前位置:首页正文

delete与delete[]区别及二维数组申请注意点

2024-11-13 来源:个人技术集锦

在对栈空间的操作时,C++常使用newdelete来进行。

对于此操作符,有int *p = new int;

                                      Int *p = new int[n];

后者常用语做动态申请内存空间使用,称为动态数组。对应的delete

                                     delete p

                                     delete []p;

         这两者之间的关系是什么呢,delete是直接删除p所指向的内存空间,而delete[]p则是先计算p所对应空间有多少个变量或对象,然后全部释放或调用相应的析构函数。

         若使用Int *p = new int[n];但在释放空间时使用delete p;则只是释放了第一个变量空间。

 

二维数组经常需要使用指针的指针,即二重指针进行申请空间的操作。

                   double **speedX

                   speedX = new double *[6];

                   for (i=0;i<6;i++)

                   {       

                            speedX[i] = new double[conncetNum];

                   }

 

释放时则应、

for (i=0;i<6;i++)

                 {

                           delete []speedX[i];

                 }

                 delete []speedX;

 

因为所对应的speedX[i]speedX都是对应多个对象,所以应使用delete[]。今天写的程序中正式因为对speedX只是调用delete而造成内存泄露。

Top