viv*_*vek 2 c++ pointers dynamic delete-operator
如果我有三个指针加倍:
rdf1 = new double [n];
rdf2 = new double [n];
rdf3 = new double [n];
我想用一个删除语句删除它们.就像是 :
delete [] rdf1,rdf2,rdf3;
什么是正确的方法呢?
Arm*_*yan 11
不幸的是,这在语法上是正确的:
delete [] rdf1,rdf2,rdf3;
更不幸的是,它没有做你认为它做的事情.它把,一个逗号操作,从而最终只删除rdf1(因为运营商delete有超过运算符优先级,).
您必须编写单独的delete []表达式以获得预期的行为.
delete [] rdf1;
delete [] rdf2;
delete [] rdf3;
公平地说,您可以将其作为单个语句来执行,而不是作为delete []运算符的单个调用:
(delete [] rdf1, delete [] rdf2, delete [] rdf3);
但是,为什么世界上你在乎它是一个还是三个?
不,这不是正确的方法.你必须分别调用delete []每个指针.  
标准形式operator delete[]只需要一个参数.
delete [] rdf1;
delete [] rdf2;
delete [] rdf3;
我总是遵循一个原则,即我编写的代码应该很容易被我之后的代码所理解.因此,不是用任何花哨的结构来做这件事,我会以更常见的方式(上面的内容)来做.