Search code examples
c++clang

Clang warning on delete pointers


I begin to use clang to replace gcc. But when I delete[] pointers, it gives warning. But when I change, the warning disappears. Why and how to deal with that?

int *a = new int[1];
int *b = new int[1];
delete[] a, b;
a.cpp:7:17: warning: expression result unused [-Wunused-value]
    delete[] a, b;
int *a = new int[1];
int *b = new int[1];
delete[] a;
delete[] b;

no warning.


Solution

  • delete[] a, b;
    

    is parsed as:

    (delete[] a), (b);
    

    Which you can really think of as:

    delete[] a;
    b;
    

    In which case it is pretty clear that you're not doing much with b.

    Where's the warning with GCC?

    If you use -Wall, gcc will also warn on this since atleast 2007 (gcc 4.1.2):

    <source>: In function 'int main()':
    <source>:4:18: warning: right operand of comma operator has no effect [-Wunused-value]
        4 |     delete[] a, b;
          |                  ^
    Compiler returned: 0