26 #ifndef __UTILS__SAFE_MEM_H__INCL__
27 #define __UTILS__SAFE_MEM_H__INCL__
30 #include <type_traits>
44 template<
typename T >
48 ::memset( p, 0,
sizeof( T ) );
62 template<
typename T >
66 ::memset( p, 0, size *
sizeof( T ) );
82 template<
typename T >
96 template<
typename T >
110 template<
typename T >
123 template<
typename T,
typename F >
136 template<
class T,
class... Args>
138 return std::unique_ptr<T>(
new T(std::forward<Args>(
args)...));
145 return std::unique_ptr<T>(
new T[n]());
154 T*
get()
const {
return ptr; }
std::unique_ptr< T > make_unique(Args &&...args)
void SafeRelease(T *&p, F f)
Releases pointer and nullifies it.
void SafeDelete(T *&p)
Deletes and nullifies a pointer.
void SafeFree(T *&p)
Frees and nullifies an array pointer.
std::unique_ptr< T > make_uniquea(size_t n)
T * SafeAllocArray(size_t size)
Allocates and zero-initializes an array.
T * SafeAlloc()
Allocates and zero-initializes memory.
void SafeDeleteArray(T *&p)
Deletes and nullifies an array pointer.