Mercurial > hg > CbC > CbC_llvm
view clang/test/Analysis/NewDeleteLeaks-PR19102.cpp @ 222:81f6424ef0e3 llvm-original
LLVM original branch
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sun, 18 Jul 2021 22:10:01 +0900 |
parents | 79ff65ed7e25 |
children |
line wrap: on
line source
// RUN: %clang_analyze_cc1 -analyzer-checker=core,cplusplus.NewDeleteLeaks -verify %s class A0 {}; class A1 { public: A1(int); }; struct S{ int i; }; class A2 { public: A2(); A2(S); A2(int*); A2(S*); A2(S&, int); A2(int, S**); }; void test() { new int; // expected-warning@+1 {{Potential memory leak}} new A0; // expected-warning@+1 {{Potential memory leak}} new A1(0); // expected-warning@+1 {{Potential memory leak}} new A2; // expected-warning@+1 {{Potential memory leak}} S s; s.i = 1; S* ps = new S; new A2(s); // expected-warning@+1 {{Potential memory leak}} new A2(&(s.i)); // expected-warning@+1 {{Potential memory leak}} new A2(ps); // no warning new A2(*ps, 1); // no warning new A2(1, &ps); // no warning // Tests to ensure that leaks are reported for consumed news no matter what the arguments are. A2 *a2p1 = new A2; // expected-warning@+1 {{Potential leak of memory}} A2 *a2p2 = new A2(ps); // expected-warning@+1 {{Potential leak of memory}} A2 *a2p3 = new A2(*ps, 1); // expected-warning@+1 {{Potential leak of memory}} A2 *a2p4 = new A2(1, &ps); // expected-warning@+1 {{Potential leak of memory}} }