Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to delete multiple dynamically allocated arrays in a single delete statement?

If I have 3 pointers to double :

rdf1 = new double [n];

rdf2 = new double [n];

rdf3 = new double [n];

I want to delete them with a single delete statement. something like :

delete [] rdf1,rdf2,rdf3;

What's the right way to do it ?

like image 741
vivek Avatar asked Nov 28 '22 18:11

vivek


2 Answers

Unfortunately, this is syntactically correct:

delete [] rdf1,rdf2,rdf3;

More unfortunately, it doesn't do what you think it does. It treats , as a comma operator, thus eventually deleting only rdf1 (since operator delete has precedence over operator ,).

You have to write separate delete [] expressions to get the expected behavior.

delete [] rdf1;
delete [] rdf2;
delete [] rdf3;
like image 57
Armen Tsirunyan Avatar answered Nov 30 '22 07:11

Armen Tsirunyan


To be fair, you can do it as a single statement, just not as a single invocation of the delete [] operator:

(delete [] rdf1, delete [] rdf2, delete [] rdf3);

But why in the world do you care whether it is one statement or three?

like image 27
andrewdski Avatar answered Nov 30 '22 07:11

andrewdski