17 #ifndef DOXYGEN_SHOULD_SKIP_THIS 24 void*
operator new(
size_t size)
throw (std::bad_alloc);
25 void operator delete(
void *p)
throw();
28 void*
operator new[](
size_t size)
throw(std::bad_alloc);
29 void operator delete[](
void *p)
throw();
31 #ifdef TRACE_MEMORY_ALLOCS 32 #define SG_MALLOC(type, len) sg_generic_malloc<type>(size_t(len), __FILE__, __LINE__) 33 #define SG_CALLOC(type, len) sg_generic_calloc<type>(size_t(len), __FILE__, __LINE__) 34 #define SG_REALLOC(type, ptr, old_len, len) sg_generic_realloc<type>(ptr, size_t(old_len), size_t(len), __FILE__, __LINE__) 35 #define SG_FREE(ptr) sg_generic_free(ptr) 36 #else //TRACE_MEMORY_ALLOCS 38 #define SG_MALLOC(type, len) sg_generic_malloc<type>(size_t(len)) 39 #define SG_CALLOC(type, len) sg_generic_calloc<type>(size_t(len)) 40 #define SG_REALLOC(type, ptr, old_len, len) sg_generic_realloc<type>(ptr, size_t(old_len), size_t(len)) 41 #define SG_FREE(ptr) sg_generic_free(ptr) 42 #endif //TRACE_MEMORY_ALLOCS 46 template <
class T>
class SGVector;
47 template <
class T>
class SGSparseVector;
48 template <
class T>
class SGMatrix;
50 #ifdef TRACE_MEMORY_ALLOCS 51 void*
sg_malloc(
size_t size,
const char* file,
int line);
52 template <
class T> T* sg_generic_malloc(
size_t len,
const char* file,
int line)
54 return (T*)
sg_malloc(
sizeof(T)*len, file, line);
57 void*
sg_calloc(
size_t num,
size_t size,
const char* file,
int line);
58 template <
class T> T* sg_generic_calloc(
size_t len,
const char* file,
int line)
60 return (T*)
sg_calloc(len,
sizeof(T), file, line);
63 void*
sg_realloc(
void* ptr,
size_t size,
const char* file,
int line);
64 template <
class T> T* sg_generic_realloc(T* ptr,
size_t old_len,
size_t len,
const char* file,
int line)
66 return (T*)
sg_realloc(ptr,
sizeof(T)*len, file, line);
70 template <
class T>
void sg_generic_free(T* ptr)
74 #else //TRACE_MEMORY_ALLOCS 76 template <
class T> T* sg_generic_malloc(
size_t len)
82 template <
class T> T* sg_generic_realloc(T* ptr,
size_t old_len,
size_t len)
88 template <
class T> T* sg_generic_calloc(
size_t len)
94 template <
class T>
void sg_generic_free(T* ptr)
98 #endif //TRACE_MEMORY_ALLOCS 99 #ifdef TRACE_MEMORY_ALLOCS 110 MemoryBlock(
void* p);
117 MemoryBlock(
void* p,
size_t sz,
const char* fname=NULL,
int linenr=-1);
121 MemoryBlock(
const MemoryBlock &b);
126 bool operator==(
const MemoryBlock &b)
const;
139 void list_memory_allocs();
142 #ifdef TRACE_MEMORY_ALLOCS 143 #define SG_SPECIALIZED_MALLOC(type) \ 144 template<> type* sg_generic_malloc<type >(size_t len, const char* file, int line); \ 145 template<> type* sg_generic_calloc<type >(size_t len, const char* file, int line); \ 146 template<> type* sg_generic_realloc<type >(type* ptr, size_t old_len, size_t len, const char* file, int line); \ 147 template<> void sg_generic_free<type >(type* ptr); 148 #else // TRACE_MEMORY_ALLOCS 149 #define SG_SPECIALIZED_MALLOC(type) \ 150 template<> type* sg_generic_malloc<type >(size_t len); \ 151 template<> type* sg_generic_calloc<type >(size_t len); \ 152 template<> type* sg_generic_realloc<type >(type* ptr, size_t old_len, size_t len); \ 153 template<> void sg_generic_free<type >(type* ptr); 154 #endif // TRACE_MEMORY_ALLOCS 200 #undef SG_SPECIALIZED_MALLOC 202 void* get_copy(
void* src,
size_t len);
203 char* get_strdup(
const char* str);
206 #endif // DOXYGEN_SHOULD_SKIP_THIS 208 #endif // __MEMORY_H__ void * sg_calloc(size_t num, size_t size)
std::complex< float64_t > complex128_t
void * sg_malloc(size_t size)
all of classes and functions are contained in the shogun namespace
#define SG_SPECIALIZED_MALLOC(type)
void * sg_realloc(void *ptr, size_t size)