如何在一条删除语句中删除多个动态分配的数组
How to delete multiple dynamically allocated arrays in a single delete statement?
如果我有3个指针要双精度:
rdf1 = new double [n];
rdf2 = new double [n];
rdf3 = new double [n];
我想用单个delete语句删除它们。例如:
delete [] rdf1,rdf2,rdf3;
正确的做法是什么?
不幸的是,这是正确的语法:
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;
我总是遵循一个原则,我写的代码应该很容易被我之后的人理解。因此,与其使用任何花哨的结构,不如使用更常见的方法(如上所述)。
相关文章:
- 使用私有析构函数删除动态分配的对象
- 错误在删除动态分配的2D数组期间发生
- 删除动态分配的数组C
- C 正确删除动态分配的内存
- 必须在C 中删除动态分配的内存
- 删除动态分配的数组时出错
- 循环访问映射并删除动态分配的元素
- 正在删除动态分配的内存
- 何时删除动态分配的内存
- 在C++循环中正确删除动态分配对象的位置
- C++:删除动态分配的类时,是否也会删除不在堆上的私有成员?
- 使用 c_str() 返回的指针删除动态分配的 std::string 是否会导致C++内存泄漏
- 为什么在 C++ 中删除动态分配的数组后不能重用它的名称?
- 从启动动态分配的数组的函数中删除动态分配的数组C++
- 在数组内的对象内删除动态分配的对象
- 删除动态分配内存
- 如何删除动态分配的参数
- c++删除动态分配内存的问题
- 为什么Qt图表示例不删除动态分配的变量
- 我可以't从txt文件中获取值后,删除动态分配的2D数组