1
0
forked from 0ad/0ad
0ad/source/lib/allocators/shared_ptr.cpp
janwas f7d5711623 additions from work:
add shared_ptr wrapper for numa_allocator and page_aligned_alloc
(removing previous code from shared_ptr.cpp)
pch: add TR1 array
wposix: add setenv
wtime: add strptime

This was SVN commit r6486.
2008-11-20 16:35:30 +00:00

44 lines
694 B
C++

#include "precompiled.h"
#include "shared_ptr.h"
#include "allocators.h" // AllocatorChecker
#ifndef NDEBUG
static AllocatorChecker s_allocatorChecker;
#endif
class CheckedArrayDeleter
{
public:
CheckedArrayDeleter(size_t size)
: m_size(size)
{
}
void operator()(u8* p)
{
debug_assert(m_size != 0);
#ifndef NDEBUG
s_allocatorChecker.OnDeallocate(p, m_size);
#endif
delete[] p;
m_size = 0;
}
private:
size_t m_size;
};
shared_ptr<u8> Allocate(size_t size)
{
debug_assert(size != 0);
u8* p = new u8[size];
#ifndef NDEBUG
s_allocatorChecker.OnAllocate(p, size);
#endif
return shared_ptr<u8>(p, CheckedArrayDeleter(size));
}