xref: /llvm-project/clang-tools-extra/test/clang-tidy/infrastructure/static-analyzer.cpp (revision 885c559369fe3d6323898c17787bd0454065fc34)
1*885c5593SDmitri Gribenko // REQUIRES: static-analyzer
2*885c5593SDmitri Gribenko // RUN: clang-tidy %s -checks='-*,clang-analyzer-*' -- | FileCheck %s
3*885c5593SDmitri Gribenko extern void *malloc(unsigned long);
4*885c5593SDmitri Gribenko extern void free(void *);
5*885c5593SDmitri Gribenko 
f()6*885c5593SDmitri Gribenko void f() {
7*885c5593SDmitri Gribenko   int *p = new int(42);
8*885c5593SDmitri Gribenko   delete p;
9*885c5593SDmitri Gribenko   delete p;
10*885c5593SDmitri Gribenko   // CHECK: warning: Attempt to free released memory [clang-analyzer-cplusplus.NewDelete]
11*885c5593SDmitri Gribenko }
12*885c5593SDmitri Gribenko 
g()13*885c5593SDmitri Gribenko void g() {
14*885c5593SDmitri Gribenko   void *q = malloc(132);
15*885c5593SDmitri Gribenko   free(q);
16*885c5593SDmitri Gribenko   free(q);
17*885c5593SDmitri Gribenko   // CHECK: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
18*885c5593SDmitri Gribenko }
19