brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.1 KiB · 502db61 Raw
44 lines · cpp
1// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -verify %s2 3class A0 {};4 5class A1 {6public:7  A1(int);8};9 10struct S{11  int i;12};13 14class A2 {15public:16  A2();17  A2(S);18  A2(int*);19  A2(S*);20  A2(S&, int);21  A2(int, S**);22};23 24void test() {25  new int; // expected-warning@+1 {{Potential memory leak}}26  new A0; // expected-warning@+1 {{Potential memory leak}}27  new A1(0); // expected-warning@+1 {{Potential memory leak}}28  new A2; // expected-warning@+1 {{Potential memory leak}}29  S s;30  s.i = 1;31  S* ps = new S;32  new A2(s); // expected-warning@+1 {{Potential memory leak}}33  new A2(&(s.i)); // expected-warning@+1 {{Potential memory leak}}34  new A2(ps); // no warning35  new A2(*ps, 1); // no warning36  new A2(1, &ps); // no warning37 38  // Tests to ensure that leaks are reported for consumed news no matter what the arguments are.39  A2 *a2p1 = new A2; // expected-warning@+1 {{Potential leak of memory}}40  A2 *a2p2 = new A2(ps); // expected-warning@+1 {{Potential leak of memory}}41  A2 *a2p3 = new A2(*ps, 1); // expected-warning@+1 {{Potential leak of memory}}42  A2 *a2p4 = new A2(1, &ps); // expected-warning@+1 {{Potential leak of memory}}43}44