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

在对栈空间的操作时,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而造成内存泄露。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值