]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
unwind-dw2.c (_Unwind_DebugHook): New function.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / ext / new_allocator / deallocate_local.cc
CommitLineData
12cde21b 1//
748086b7
JJ
2// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
3// Free Software Foundation, Inc.
12cde21b
BK
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
748086b7 8// Free Software Foundation; either version 3, or (at your option)
12cde21b
BK
9// any later version.
10//
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15//
16// You should have received a copy of the GNU General Public License along
748086b7
JJ
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
12cde21b
BK
19
20// 20.4.1.1 allocator members
21
22#include <string>
a1340af7 23#include <stdexcept>
debac9f4 24#include <cstdlib>
b7e2f896 25#include <cstdio>
12cde21b 26#include <ext/new_allocator.h>
12cde21b 27
a1340af7
BK
28static size_t count;
29
30struct count_check
31{
32 count_check() { }
33 ~count_check()
34 {
35 if (count != 0)
36 throw std::runtime_error("allocation/deallocation count isn't zero");
37 }
38};
12cde21b 39
a1340af7
BK
40static count_check check;
41
12cde21b
BK
42void* operator new(size_t size) throw(std::bad_alloc)
43{
debac9f4
PC
44 std::printf("operator new is called \n");
45 void* p = std::malloc(size);
12cde21b
BK
46 if (p == NULL)
47 throw std::bad_alloc();
a1340af7 48 count++;
12cde21b
BK
49 return p;
50}
51
52void operator delete(void* p) throw()
53{
debac9f4 54 std::printf("operator delete is called \n");
12cde21b
BK
55 if (p == NULL)
56 return;
a1340af7 57 count--;
12cde21b
BK
58}
59
60typedef char char_t;
61typedef std::char_traits<char_t> traits_t;
62typedef __gnu_cxx::new_allocator<char_t> allocator_t;
63typedef std::basic_string<char_t, traits_t, allocator_t> string_t;
64
65int main()
66{
a1340af7
BK
67 string_t s;
68 s += "bayou bend";
12cde21b
BK
69 return 0;
70}