mirror of
https://github.com/openmoh/openmohaa.git
synced 2025-04-28 21:57:57 +03:00
Add placement new/placement delete
This commit is contained in:
parent
a5bb4c1874
commit
a1d47cf64a
2 changed files with 33 additions and 5 deletions
|
@ -526,3 +526,18 @@ void Container<Type>::Copy(const Container<Type>& container)
|
|||
|
||||
return;
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void *operator new(size_t count, Container<T>& container)
|
||||
{
|
||||
(void)count;
|
||||
|
||||
assert(count == sizeof(T));
|
||||
return &container.ObjectAt(container.AddObject());
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void operator delete(void *ptr, Container<T>& container)
|
||||
{
|
||||
container.RemoveObject((T *)ptr);
|
||||
}
|
||||
|
|
|
@ -26,14 +26,27 @@ Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
|||
|
||||
#include "q_shared.h"
|
||||
|
||||
class LightClass {
|
||||
class LightClass
|
||||
{
|
||||
public:
|
||||
#ifndef _DEBUG_MEM
|
||||
void* operator new(size_t);
|
||||
void operator delete(void*);
|
||||
void *operator new(size_t);
|
||||
void operator delete(void *);
|
||||
|
||||
void* operator new(size_t size, void* placement);
|
||||
void operator delete(void* ptr, void* placement);
|
||||
void *operator new(size_t size, void *placement);
|
||||
void operator delete(void *ptr, void *placement);
|
||||
|
||||
template<typename T>
|
||||
void *operator new(size_t size, T& placement)
|
||||
{
|
||||
return operator new(size, (void *)&placement);
|
||||
}
|
||||
|
||||
template<typename T>
|
||||
void operator delete(void *ptr, T& placement)
|
||||
{
|
||||
return operator delete(ptr, (void *)&placement);
|
||||
}
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue