1 // Boost checked_delete test program 2 3 // Copyright Beman Dawes 2001. Copyright 2014 Peter Dimov. 4 // Distributed under the Boost Software License, Version 1.0. 5 // See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt 7 8 #include <boost/core/checked_delete.hpp> 9 #include <boost/core/lightweight_test.hpp> 10 11 struct X 12 { 13 static int instances; 14 XX15 X() 16 { 17 ++instances; 18 } 19 ~XX20 ~X() 21 { 22 --instances; 23 } 24 25 private: 26 27 X( X const & ); 28 X & operator=( X const & ); 29 }; 30 31 int X::instances = 0; 32 main()33int main() 34 { 35 BOOST_TEST( X::instances == 0 ); 36 37 { 38 X * p = new X; 39 40 BOOST_TEST( X::instances == 1 ); 41 42 boost::checked_delete( p ); 43 44 BOOST_TEST( X::instances == 0 ); 45 } 46 47 { 48 X * p = new X[ 3 ]; 49 50 BOOST_TEST( X::instances == 3 ); 51 52 boost::checked_array_delete( p ); 53 54 BOOST_TEST( X::instances == 0 ); 55 } 56 57 return boost::report_errors(); 58 } 59