1 ///////////////////////////////////////////////////////////////////////////////
2 // Copyright (c) 2000-2014 Ericsson Telecom AB
3 // All rights reserved. This program and the accompanying materials
4 // are made available under the terms of the Eclipse Public License v1.0
5 // which accompanies this distribution, and is available at
6 // http://www.eclipse.org/legal/epl-v10.html
7 ///////////////////////////////////////////////////////////////////////////////
11 #ifndef _Common_memory_H
17 class debug_new_counter_t
20 static const char * progname;
22 debug_new_counter_t();
23 ~debug_new_counter_t();
24 void set_program_name(const char *pgn);
26 // implementation in new.cc
28 // An instance for every translation unit. Because each instance is constructed
29 // before main() and probably before any other global object,
30 // it is destroyed after main() ends and all global objects are destroyed.
31 // The last destructor runs check_mem_leak().
32 static debug_new_counter_t debug_new_counter;
34 // Custom placement new for memory tracking
35 void* operator new(size_t size, const char* file, int line);
36 void* operator new[](size_t size, const char* file, int line);
38 // Redirect "normal" new to memory-tracking placement new.
39 #define new new(__FILE__, __LINE__)
41 #endif // MEMORY_DEBUG